0

現在、次のコードを使用してタグ付けシステムを導入しています

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

現在レンダリングされているものではなく、投稿タイトル投稿本文のより快適な方法でそれらを表示するにはどうすればよいですか?

4

1 に答える 1

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")、コントローラーに入れてから、my_postsではなく@postsをループします。必要に応じて上記をフォーマットします。

お役に立てれば。

于 2012-06-03T05:58:39.433 に答える