1

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

我将如何处理这个问题?我尝试为tagsand创建一个控制器categories,每个控制器只有一个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)

由于tagsandcategory被传递为:formatURL 的显示为'root.com/tag.selected-tag'and 'root.com/category.selected-category'

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

4

1 回答 1

4

下面可能会做你想要的:

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

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

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

link_to tag, tag_path(:tag => tag)

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

于 2012-07-28T21:32:41.100 回答