MetaSearch “undefined method `model_name' for NilClass:Class” for global bar search

大城市里の小女人 提交于 2019-11-30 07:42:32

问题


I'm using fantastic MetaSearch by Ernie, but I'm having an annoying issue.

In my application.html.erb I have an search field, just like this one on top of StackOverflow page.

<%= form_for @search, :url => vagas_path do |f| %>
    <%= f.text_field :titulo_or_empresa_user_username_contains %>
    <%= f.submit "", :class => "search-button", :name => "submit" %>
<% end %>

The problem is that I don't have @search initialized in all actions of all controllers, so when I'm not at Vagas#index I get the "undefined method `model_name' for NilClass:Class" message.

What's the best solution for that?

============================================

Solution

<%= form_tag vagas_path, :method => :get, :id => 'vaga_search' do %>
    <%= text_field_tag 'search[titulo_or_empresa_user_username_contains]' %>
    <%= submit_tag "", :class => "search-button", :name => "submit", :id => 'search_submit' %>
<% end %>

回答1:


You would get this error if @search is set to nil. Ensure that this is not the case.




回答2:


Try this syntax:

<%= form_for(:object) do |obj| %>

In my case I was using the view to collect nested attributes from user inputs but this syntax also gets around this error message in other contexts.



来源:https://stackoverflow.com/questions/5147693/metasearch-undefined-method-model-name-for-nilclassclass-for-global-bar-sea

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!