【问题标题】:Properly set / match routes in routes.rb在 routes.rb 中正确设置/匹配路由
【发布时间】:2015-09-29 21:28:20
【问题描述】:

我已经在我的应用中实现了基本的标签,所以帖子可以通过标签过滤。

在我的 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 %>

问题是&lt;%= link_to tag.name, tag_path(tag) %&gt; 导致/tags/:id 而不是/tags/:tag,因此不起作用。

如何正确设置?

【问题讨论】:

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


    【解决方案1】:

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

    def to_param
      name
    end
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 这一行“get 'tags/:tag', to: 'links#index', as: :tag” 就是这样工作的。当我单击名为“test”的标签时,它会将我带到../tags/test。如何在索引标签时使其工作?
      • 在您的标签控制器中,您会找到Tag.find_by(name: tag) 之类的标签。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多