我正在为我的应用程序实现一个基本的标记功能。铁轨新手。
我有一个列表模型,我正在使用 Listings_controller # 索引。当用户进入列表页面并设置 :tag 参数时,我希望 @users 只保留与标签匹配的用户。
因此,如果他们转到 www.example.com/listings?tag=foo,则只会加载已用 foo 标记的页面。到目前为止,这是我想出的,但它有几个问题。
def index
if params[:tag]
@id = Tag.where(:name => params[:tag]).first.id
@listingid = Tagging.where(:tag_id => @id)
@listingid.each do |l|
@users = User.find(l.listing_id)
end
else
@users = User.all
end
end
我不确定如何循环并将每个找到的用户添加到@users。我想我可能会以错误的方式处理整个事情。我的标签/标签模型如下所示:
标签.rb
class Tag < ActiveRecord::Base
has_many :taggings
has_many :listings, through: :taggings
end
标记.rb
class Tagging < ActiveRecord::Base
belongs_to :tag
belongs_to :listing
end
标记具有以下列:
id, tag_id, listing_id
标签具有以下列:
id, name
任何指导将不胜感激,一直试图解决这个问题,但没有运气。