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