2012-05-25 38 views
0

我一直在尝试过去2天,但最终失败。我想获得这样的URL:dresses/type/flower-girl但我的一切是/dresses/type/4Rails路由:即使使用了friendly_id,URL也不会改变

我有Shop has_many DressesType has_many Dresses。在我的Dress表中,我有type_id列,其中引用Type表。

这是我的代码:

# Routes file 
resources :dresses 
match '/dresses/type/:id' => 'dresses#type' 

# Type.rb model 
extend FriendlyId 
friendly_id :name, use: :slugged 

# Dresses Controller 
def index 
    @types = Type.all 
end 

def type 
    @dresses = Dress.find_all_by_type_id(params[:id]) 
end 

# View (index.html.erb) 
<% @types.each do |type| %> 
    <%= link_to type.name, :action => "type", :id => type.id %> 
<% end %> 

我也尝试使用:name替换路由中的:id,控制器&查看,但它们产生了/dresses/type/Flower%20Girl而不是。

我做错了什么?

回答

3

好吧,在你的索引视图,改变这种
<%= link_to type.name, :action => "type", :id => type.id %>
<%= link_to type.name, :action => "type", :id => type.slug%>

我想friendly_id并不神奇支持自定义路线,所以你可能最终通过,而不是一决高下的ID在寻找你的记录控制器。

+0

如果我使用连字符重命名名称列中的所有值,则连字符将出现在我的应用程序中的任何位置。此外,friendly_id gem的slug列已经考虑到了这一点,我只是希望gem使用slug列中的值,它失败了(或者我可能弄乱了路由)。 –

+0

啊对,你可以展示你的迁移吗? – rb512

+0

Homey-schmomey,它的工作原理!为什么我没有想到这个?无论如何,谢谢你。 :) –

相关问题