2012-12-23 80 views
0

我想使用meta_search寶石。我有這個在我看來:導軌形式f.select錯誤

<%= 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.[] 

回答

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)) %> 

,或者您可以使用andand寶石做同樣的事情有點清潔:

<%= 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)) %>