使用acts_as_taggable gem为两个表中的标记路由路径

时间:2017-04-16 11:27:52

标签: ruby-on-rails acts-as-taggable-on

我正在使用acts_as_taggable gem将标签添加到两个单独的模型文章和咖啡店。我有能力分别提交和显示两个模型中的标签。当您单击标记时,它还会显示包含该标记的文章列表。我无法解决的是如何为Coffeeshops做这件事。该路径只会将您带到文章索引。我确信我需要更改routes.rb中的内容以及coffeeshop/index.html.erb

中的个别路径

在我的路线中:

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

将此复制到咖啡店显然不起作用。我正在思考:

 get 'tags/:article_tag, to 'articles#index, as: article_tag
 get 'tags/:coffeeshop_tag, to 'coffeeshops#index, as: coffeeshop_tag

get 'articles/tags/:article_tag, to 'articles#index, as: article_tag
get 'coffeeshops/tags/:coffeeshop_tag, to 'coffeeshops#index, as: coffeeshop_tag

不起作用

但是如何在视图中更改此内容?我目前有: <%= raw(@article.tag_list.map { |t| link_to t, tag_path(t) }.join(', ')) %>

我将其更改为:

<%= raw(@article.tag_list.map { |t| link_to t, @article.tag_path(t) }.join(', ')) %>但这只会引发undefined method 'tag_path' for #<Article:0x007fd49ab18f98> Did you mean? image_path错误。

1 个答案:

答案 0 :(得分:0)

对它进行排序。

将视图标记更新为:

<%= raw(@coffeeshop.tag_list.map { |t| link_to t, coffeeshops_tag_path(t) }.join(', ')) %>

并改变了路线如下:

get 'coffeeshops/tags/:tag', to: 'coffeeshops#index', as: :coffeeshops_tag