【发布时间】:2014-04-30 10:37:58
【问题描述】:
我与用户和标签有多对多关联。我想根据选中的标签复选框向用户显示。这是我在视图中的搜索表单。
<%= form_tag users_path, :method => 'get' do %>
<% @tags.each do |tags| %>
<li><%= check_box_tag "tag_id[]", tags.id %>
<%= tags.name %>
</li>
<% end %>
<%= submit_tag "Search" %>
<% end %>
当我单击几个框时,它会将它们存储在“tag_id”中。我的参数如下所示:
params
=> {"utf8"=>"✓",
"tag_id"=>["1", "3"],
"commit"=>"Search",
"action"=>"index",
"controller"=>"users"}
我终其一生都无法弄清楚如何在控制器中进行搜索。我需要这样的东西:
def index
#psuedo code -- if searching#
@users = User.all.where(#all users that have the selected tag_id's associated with the User. In this example, all users with tag_id's 1 and 3)
else
@tags = Tag.all
@users = User.all
end
我可怜的尝试:
def index
binding.pry
@tags = Tag.all
@users = User.all.where(self.tags)
#@users = User.search(params[:search])
end
【问题讨论】:
-
您使用的是什么版本的 Rails? 4 或之前?
-
我使用的是 Rails 4.0.0
-
您想选择同时具有标签 1 和标签 3 的所有用户,还是选择其中任何一个都可以?
-
@KirtiThorat 它是动态的。这取决于应用用户决定点击的复选框。如果用户单击复选框 1 和 3,我希望找到并显示所有具有第一个和第三个标签的用户。如果应用程序用户只点击第二个复选框,我希望显示与第二个标签关联的用户。抱歉,有时很难清楚地表达我想要做什么。
-
我不认为你有我的问题。如果用户选择 1 和 3,那么您是要显示带有标签 1 和 3 的所有用户(都是必需的)还是要显示带有标签 1 或 3 的所有用户?
标签: ruby-on-rails search checkbox params model-associations