1

このコードを使用してアプリのタグ付けシステムをセットアップした場合、割り当てたタグを使用して投稿をレンダリングするにはどうすればよいでしょうか。たとえば、スポーツ タグをいくつかの投稿に割り当てた場合、スポーツ タグが割り当てられたすべての投稿をどのようにレンダリングしますか?

 rails g model tag name:string
 rails g model tagging article_id:integer tag_id:integer
 rake db:migrate

 class Tagging < ActiveRecord::Base
   belongs_to :article
   belongs_to :tag
 end

 class Tag < ActiveRecord::Base
   has_many :taggings, :dependent => :destroy
   has_many :articles, :through => :taggings
 end

 class Article < 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>
4

1 に答える 1

1

多分このようなもの:

# TagsController
def show
  @articles = Tag.find_by_name('sports').articles
end

# tags/show.html.haml
- @articles.each do |article|
  = render :partial => :article
于 2012-05-30T05:15:22.597 に答える