Ruby on rails 如何使用带有选项的select_标记从_集合中获取所选值,并将其传递给控制器
我构建了一个表单搜索,如下所示:Ruby on rails 如何使用带有选项的select_标记从_集合中获取所选值,并将其传递给控制器,ruby-on-rails,ruby-on-rails-3,sunspot,sunspot-rails,Ruby On Rails,Ruby On Rails 3,Sunspot,Sunspot Rails,我构建了一个表单搜索,如下所示: <%= form_tag({ controller: 'questions', action: 'search_topic' }, method: 'get') do %> <%= select_tag 'search_topic', options_from_collection_for_select(current_user.get_topics, :id, :name) %> <%= submit_tag "Searc
<%= form_tag({ controller: 'questions', action: 'search_topic' }, method: 'get') do %>
<%= select_tag 'search_topic', options_from_collection_for_select(current_user.get_topics, :id, :name) %>
<%= submit_tag "Search", name: nil, class: 'btn' %>
<% end %>
这是我的控制器:
def search_topic
@search = Question.search do
with(:topic_id, params[:search])
paginate page: 1, per_page: 10
end
@questions = @search.results
render 'index'
end
那么,如何将从表单上的选择框中选择的值传递给控制器进行搜索?嘿,不需要传递参数[:search]。
Rails会在单击submit按钮时自动为select生成参数。
如果要将名称参数设置为“搜索”,请将选择“搜索主题”的名称更改为“搜索”。
如果您想检查params的值,它将如何在params中接收,请尝试调试器并检查此表单生成的params的值。
此外,还有一个快捷方式,按submit后尝试在要调用的操作中输入错误,然后读取浏览器页面上的参数。你也可以在下一页用flash打印
<%= select_tag 'search_topic',
options_from_collection_for_select(current_user.get_topics, :id, :name) %>
包含您选择的值。我已在控制器中传递了它,但搜索有问题。您在控制器中做了什么?你能在控制器和视图文件中共享你的代码吗?如果我的问题中可能有我的控制器和视图,那么也会出现错误,唯一不同的是我已将参数[:search]更改为参数[:search\u topic]。有些主题不会返回任何问题,尽管这些主题有问题,有些主题返回了问题,但我无法分页以移动下一页。我使用
will_upagine
。尝试使用paginate page:params[:page],每个页面:10
def search_topic
@search = Question.search do
with(:topic_id, params[:search])
paginate page: 1, per_page: 10
end
@questions = @search.results
render 'index'
end
<%= select_tag 'search_topic',
options_from_collection_for_select(current_user.get_topics, :id, :name) %>
params[:search_topic]