rails 4 def to_param有2个型号

时间:2015-05-07 09:19:05

标签: ruby-on-rails url ruby-on-rails-4 url-rewriting

在尝试创建友好的URL时,我遇到了一些奇怪的事情。

我有一个项目模型,其中包含:

def to_param
  "#{id}-#{name}".parameterize
end

这使我的商品网址包含“ID”和“名称”就好了:

www.domain.com/items/ID-name

我还有一个类别模型(项目属于类别和用户模型),我有与上面相同的def to_param,但类别URL保持“不友好”,不包括“名称”:

domain.com/categories/ID 

我在类别表中有名称列,它有值。 我还使用祖先作为类别模型。也许has_ancestry引起了这个问题?

我试过以下但没有运气:

def to_param
 [id, name.parameterize].join("-")
end

感谢您的任何建议!

1 个答案:

答案 0 :(得分:0)

Papirtiger的评论引导我找到解决方案。 问题是我有这样的链接:

<% @category.children.in_groups_of(4, false) do |childs| %>
 <tr>
 <% for categories in childs %>
 <td>
 <%= link_to "../categories/#{categories.id}" do %><%= categories.name %><% end %></td>
 <% end %>
 </tr>

初学者解决方案。 :)

删除了丑陋的部分,现在它可以工作:

<% @category.children.in_groups_of(4, false) do |childs| %>
 <tr>
 <% for categories in childs %>
 <td><%= link_to categories do %><%= categories.name %><% end %> (<%= Item.where(:category_id => categories.id).count %>)</td>
 <% end %>
 </tr>