标签找到的帖子格式

时间:2012-06-03 05:48:08

标签: ruby-on-rails ruby ruby-on-rails-3 tags call

我目前有一个标记系统,其中包含以下代码

 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>]

我怎样才能让它们以更加友好的方式出现在帖子标题帖体上而不是现在呈现的内容?

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。根据需要格式化上述内容。

希望这有帮助。