【问题标题】:Creating actions and routes for tags and categories为标签和类别创建操作和路由
【发布时间】:2012-07-28 21:18:14
【问题描述】:

我正在使用 Rails 3.2.5 为自己创建一个博客,并尝试正确处理 tagscategories。我想允许用户单击带有标签名称的link_to,将它们带到具有相同标签的其他条目,并且URL 为'root.com/tag/selected-tag'。对于类别,我希望 URL 为 'root.com/category/selected-category'。我已经开始这样做了,我使用acts_as_taggable_on 进行标记和一个简单的text input 用于类别(当我决定我想要什么类别时将变成select input)。

我将如何处理这个问题?我尝试为tagscategories 创建一个控制器,每个控制器都只有一个index 操作。对于'tags#index',我有:

@entries = Entry.order('created_at desc').tagged_with(params[:format]).paginate(:page => params[:page], :per_page => 10)

对于我拥有的每个tag 的链接:

= link_to tag, tag_path(tag)

由于某种原因,tag 被作为:format 传递,这就是我得到tagged_with(params[:format]) 的原因。

我将'categories#index' 定义为:

@entries = Entry.order('created_at desc').where(:category => params[:format]).paginate(:page => params[:page], :per_page => 10)

category 的链接是:

  - entry.tag_list.each do |tag|
    = link_to tag, tag_path(tag)

由于tagscategory 作为:format 传递,因此URL 显示为'root.com/tag.selected-tag''root.com/category.selected-category'

我将如何正确处理 tagscategories 以使 URL 显示为 'root.com/tag/selected-tag''root.com/category/selected-category'

【问题讨论】:

    标签: ruby-on-rails-3 routes categories acts-as-taggable-on controller-actions


    【解决方案1】:

    下面可能会做你想做的事:

    在您的路线中: match 'tag/:tag' => 'tags#index', :as => :tag

    然后,当有人访问example.com/tag/some-tag-here 时,您可以通过以下方式访问控制器中的标签: params[:tag]

    您可以通过以下方式链接到您的路线:

    link_to tag, tag_path(:tag => tag)

    类似的解决方案也应该适用于类别。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      • 1970-01-01
      • 2018-08-10
      • 2013-05-28
      • 1970-01-01
      相关资源
      最近更新 更多