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

Properly set / match routes in routes.rb

我在我的应用程序中实现了基本标记,因此可以按标签过滤帖子。

我的routes.rb中有一条路线

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

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

我已经设置了这条路线

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,因此不起作用。

如何正确设置?

假设您正在尝试匹配 tags/tag-name 之类的内容,其中 tag-nameTags 上的 id 以外的字段;你可以使用 friendlyId.

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

def to_param
  name
end