Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何使用带有选项的select_标记从_集合中获取所选值,并将其传递给控制器_Ruby On Rails_Ruby On Rails 3_Sunspot_Sunspot Rails - Fatal编程技术网

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]