0

我想使用meta_search宝石。我认为这是:

<%= f.select :project_type_id_in, 
   raw("<option value=''>-- Proje Types --</option>" + 
   options_from_collection_for_select(ProjectType.all, :id, :name, 
   params[:search][:project_type_id_in].to_i )) %>

但是当我打电话给控制器时,我得到了这个错误:

You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.[]
4

1 回答 1

0

params[:search]似乎是nil,可能是因为尚未指定搜索选项。您可以确保在页面加载之前对其进行初始化以避免这种情况。或者你可以像这样修复它:

<%= f.select :project_type_id_in, 
      raw("<option value=''>-- Proje Types --</option>" + 
      options_from_collection_for_select(ProjectType.all, :id, :name, 
      params[:search].present? ? params[:search][:project_type_id_in].to_i : nil)) %>

或者你可以使用andandgem 来做同样的事情更清洁:

<%= f.select :project_type_id_in, 
      raw("<option value=''>-- Proje Types --</option>" + 
      options_from_collection_for_select(ProjectType.all, :id, :name, 
      params[:search]&&.[:project_type_id_in].to_i)) %>
于 2012-12-23T14:49:26.760 回答