我有一个很好的Rails博客。但是,我似乎无法将我的标记文章显示在他们自己的页面中(例如,我只想标记Arts& Entertainment的文章在点击该链接时显示)。
我的脚手架模型中有一个名为标签的列。它需要一个字符串。所以
1)如何仅访问特定标签?我试过以下的东西:
def self.sports
find(:all, :tags => 'gainmuscle')
end
无济于事。
2)如何让它们显示在视图中?
非常感谢任何帮助。
答案 0 :(得分:1)
您可以在控制器中定义类似于此的方法:
def self.tagged_with
@articles = Article.tagged(params[:tag]).paginate(default_paginate_options)
end
此处tagged
是namedscope
。您可以忽略这一点,但该操作会生成所有标记为选中为:param
的标记的文章。在这种情况下,Tag是模型Article的属性。
答案 1 :(得分:1)
1)在这里你可以使用模型中的范围:
class YourModel < ActiveRecord::Base
scope :by_tag, lambda{|tag| where(:tag => tag)}
...
end
然后在控制器中:
@collection = YourModel.by_tag("gainmuscle")
2)我想说最好的方法是为1个单个帖子创建一个带有html代码的部分,然后以这种方式呈现:
render :partial => 'post', :collection => @collection
(您可以在此检查部分用法:http://apidock.com/rails/ActionView/Partials)
答案 2 :(得分:0)
提到另一种方法;有很多宝石可以解决这个问题。 This可能很有趣,我个人可以为acts_as_taggable_on投票。这为您提供了很多选项,以后可能会派上用场。