我目前有一个标记系统,其中包含以下代码
rails g model tag name:string
rails g model tagging post_id:integer tag_id:integer
rake db:migrate
class Tagging < ActiveRecord::Base
belongs_to :post
belongs_to :tag
end
class Tag < ActiveRecord::Base
has_many :taggings, :dependent => :destroy
has_many :posts, :through => :taggings
end
class Post < ActiveRecord::Base
has_many :comments, :dependent => :destroy
has_many :taggings, :dependent => :destroy
has_many :tags, :through => :taggings
validates_presence_of :name, :content
attr_writer :tag_names
after_save :assign_tags
def tag_names
@tag_names || tags.map(&:name).join(' ')
end
private
def assign_tags
if @tag_names
self.tags = @tag_names.split(/\s+/).map do |name|
Tag.find_or_create_by_name(name)
end
end
end
end
<p>
<%= f.label :tag_names %><br />
<%= f.text_field :tag_names %>
</p>
_post.html.erb部分中的
我正在尝试通过执行
来调用具有特定标记的帖子 <%= post.find_by_tag("sports") %>
当我这样做时,带有标签的所有帖子都出现了我想要的但是它们以这种格式出现
[#<Post id: 11, title: "adfads", body: "adsfasd", user_id: 1, created_at: "2012-05-30 06:17:52", updated_at: "2012-05-30 06:17:52", votes_count: 1>, #<Post id: 8, title: "Cover Letter", body: "Dear Human Resources:\r\n\r\nI would like to make mysel...", user_id: 1, created_at: "2012-05-30 00:28:56", updated_at: "2012-05-30 00:28:56", votes_count: 1>]
我怎样才能让它们以更加友好的方式出现在帖子标题帖体上而不是现在呈现的内容?
答案 0 :(得分:0)
你真的应该在控制器中找到你的发现。忽略该问题,请尝试以下方法:
<% my_posts = post.find_by_tag("sports") %>
<% my_posts.each do |post| %>
<%= post.title %><br />
<%= post.body %><br />
<% end %>
理想情况下,您在控制器中有@posts = post.find_by_tag("sports")
,然后循环遍历@posts而不是my_posts。根据需要格式化上述内容。
希望这有帮助。