Ruby on rails rails/ruby:过滤

Ruby on rails rails/ruby:过滤,ruby-on-rails,Ruby On Rails,这是我的密码。基本上,标签都有微孔,当我从params[:tag_id]中指定标签数组时,我使用一个multiple select_标签,我想要标签指定的所有微孔的交点 当数组只有一个标记,但似乎不能处理多个标记时,此代码可以工作。错误在哪里?我不确定是否完全理解您的意图。但是,也许你所追求的东西就是这些东西,进入了这个世界,除非 对于具有任何标记的帖子: query = Micropost.order("created_at desc") unless params[:tag_id].b

这是我的密码。基本上,标签都有微孔,当我从params[:tag_id]中指定标签数组时,我使用一个multiple select_标签,我想要标签指定的所有微孔的交点


当数组只有一个标记,但似乎不能处理多个标记时,此代码可以工作。错误在哪里?

我不确定是否完全理解您的意图。但是,也许你所追求的东西就是这些东西,进入了这个世界,除非

对于具有任何标记的帖子:

 query = Micropost.order("created_at desc")
  unless params[:tag_id].blank? or params[:tag_id] == "Select a tag"
    tags = Tag.all
    params[:tag_id].each do |index|
      query = tags[Integer(index) - 1].microposts.order("created_at desc") & query
    end
  end
对于具有所有标记的帖子:

tags = Tags.where(:id => params[:tag_id]).all
posts_with_tags = tags.map(&:microposts).flatten.uniq

如果希望所有微孔与所选标记关联的微孔集合相交,则只需查询与所选标记关联的所有微孔并收集微孔。 带栏杆3

tags = Tags.where(:id => params[:tag_id]).all
posts_with_tags = tags.map(&:microposts).inject { |memo, elem| memo & elem }

也许我误解了你的问题,对不起。

我得到tag\u id=>[64,6]对于tag\u id,是否需要拆分?不确定,你可能缺少一个flatti-get-undefined方法,用于给出a或b的所有工作。如何修改以给出a和b?其中a和b是标签。
  unless params[:tag_id].blank? or params[:tag_id] == "Select a tag"
   query= Tag.where(["id in (?)",params[:tag_id]]).collect(&:microposts).uniq
end