【发布时间】:2017-01-04 19:24:07
【问题描述】:
我尝试传递 2 个搜索选项。第一个 [:q] 用于访问者的输入文本,另一个来自模型露营“nomdep”(如英语中的部门)。当我尝试通过输入进行搜索时,它可以工作,但是由于我尝试添加 select_tag 我有一个错误
错误 nil:NilClass 的未定义方法 `map'
我迷路了,你有什么想法吗?
对不起我的英语,我是法语。
Home_controler.rb
def index
if params[:q].nil?
"Entrez un mot clef"
else
@campings = Camping.__elasticsearch__.search params[:q,:nomdep]
@camping = Camping.all
end
end
def result
if params[:q].nil?
@campings = []
else
@campings = Camping.__elasticsearch__.search(params[:q]).page(params[:page]).per(14).results
end
end
查看
<div class="search">
<%= form_tag(result_path, method: :get) %>
<%= text_field_tag :q, params[:q], class:"search-query form-control" %>
<%= select_tag(:nomdep, options_for_select(@camping)) %>
<%= submit_tag "Partez", class:"btn btn-danger", name: nil %>
</div>
编辑 现在我没有任何错误,但如果 [:q] 为空,则搜索不起作用。所以如果我只选择标签 => 没有结果。
如何解决这个问题?
我的完整 home_controller.rb
class HomeController < ApplicationController
def index
@camping = Camping.all
if params[:q].nil?
"Entrez un mot clef"
else
@campings = Camping.__elasticsearch__.search params[:q, :nomdep]
end
end
def result
if params[:q].nil?
@campings = []
else
@campings = Camping.__elasticsearch__.search(params[:q]).page(params[:page]).per(14).results
end
end
end
我的看法
<div class="search">
<%= form_tag(result_path, method: :get) %>
<%= select_tag :nomdep, options_from_collection_for_select(@camping, :id, :nomdep), prompt: "Département" %>
<%= text_field_tag :q, params[:q], class:"search-query form-control" %>
<%= submit_tag "Partez", class:"btn btn-danger", name: nil %>
</div>
【问题讨论】:
标签: ruby-on-rails forms search elasticsearch ruby-on-rails-5