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 に答える