在routes.rb中正确设置/匹配路由

时间:2015-09-29 21:28:20

标签: ruby ruby-on-rails-4 routes

我已在我的应用中实施了基本标记,因此可以按标记过滤帖子。

我的routes.rb中有一条路线

get 'tags/:tag', to: 'links#index', as: :tag

但是,我希望有一个列出所有标签的URL /标签(触发标签控制器中的索引操作)。

我已经设置了这条路线

get 'tags' => 'tags#index'

在我的代码视图中,我有index.html.erb

<% @tags.each do |tag| %>
    <div class="row">
        <%= link_to tag.name, tag_path(tag) %>
    </div>
<% end %>

问题在于<%= link_to tag.name, tag_path(tag) %>会导致/tags/:id而不是/tags/:tag,因此无效。

如何正确设置?

2 个答案:

答案 0 :(得分:1)

将以下to_param方法添加到您的Tag模型中:

def to_param
  name
end

答案 1 :(得分:0)

假设您尝试匹配tags/tag-name之类的内容,而tag-nameid以外的Tags字段;你可以使用friendlyId