meta_search
보석을 사용하여 카탈로그에서 제품을 검색하고 있습니다. 그러나 검색 페이지를 처음 입력하거나 공백 값을 보내면 검색이 수행되고 모든 제품이 반환되고 나열됩니다.검색 입력 값을 확인하는 검색을 방지합니다
검색 입력의 값이 nil
또는 ""
이 아닌지 확인하려고하지 않으므로 텍스트 필드에 실제로 무엇인가가 입력되었을 때만 검색이 수행됩니다.
이 내 search.html.erb
파일입니다
<%= render :partial => 'search_box' %>
<% if @products %>
<p>The search "<%= params[:search][:name_contains] %>" returned <%= pluralize @products.size, "result" %>:</p>
<%= render(:partial => "products") %>
<% end %>
_search_box.html.erb
:
<%= form_for @search, :url => "/catalog/search", :html => {:method => :get} do |f| %>
<%= f.label :Name %>
<%= f.text_field :name_contains %>
<%= f.submit 'Search' %>
<% end %>
CatalogController
의 search
방법 : 나는 /catalog/search
를 탐색 할 때
def search
if params[:search]
@search = Product.search(params[:search])
@products = @search.all
unless @products.size > 0
flash.now[:notice] = "No results"
end
end
end
나는 다음과 같은 얻을 오류 :
NoMethodError in Catalog#search
Showing /*****/app/views/catalog/_search_box.html.erb where line #1 raised:
undefined method `model_name' for NilClass:Class
Extracted source (around line #1):
1: <%= form_for @search, :url => "/catalog/search", :html => {:method => :get} do |f| %>
2: <%= f.label :Nombre %>
3: <%= f.text_field :name_contains %>
4: <%= f.submit 'Search' %>
를 찾을 수 이런 식으로 생각합니다. 왜 여기서 form_for를 사용하고 있습니까? 그냥 form_tag를 사용하면 – LHH
거기에 할 수있는 몇 가지 방법이 있습니다 : http://stackoverflow.com/questions/5827910/how-to-set-a-0-result-in-meta-search-before-user -pressing-a-search-button –