кода в моей модели продукта (product.rb):Rails 3, простой формы поиска проблема
def self.search(search)
if search
find(:all)
else
find(:all)
end
end
код в мой контроллер поиска (search_controller.rb):
def index
@products = Product.search("Apple")
end
код на мой взгляд, (index.html.erb):
<h1>Products</h1>
<% form_tag client_search_path , :method => :get do %>
<p>
<%= search_field_tag :term, params[:term], :class=> "auto_search_complete"%>
<%= submit_tag "Search", :name => nil, :class => 'button', :id => "search_bn" %>
</p>
<% end %>
<table border="1px">
<tr>
<th>Name</th>
<th>Brand</th>
<th>Quantity available</th>
<th>Category</th>
<th>Shopcenter name</th>
<th>Shopcenter streetnumb</th>
<th>Shopcenter streetname</th>
<th>Shopcenter postal</th>
<th>Shopcenter province</th>
</tr>
<% for product in @products%>
<tr>
<td><%= product.name %></td>
<td><%= product.brand %></td>
<td><%= product.quantity_available %></td>
<td><%= product.category %></td>
<td><%= product.shopCenter_name %></td>
<td><%= product.shopCenter_streetNumb %></td>
<td><%= product.shopCenter_streetName %></td>
<td><%= product.shopCenter_postal %></td>
<td><%= product.shopCenter_province %></td>
</tr>
<% end %>
</table>
загружаю это все хорошо, но если я комментирую один из линии кодов в моей модели:
def self.search(search)
if search
#find(:all)
else
find(:all)
end
end
Я ожидаю, что это сработает, по крайней мере, для первоначального рендера или когда я отправлю пустой поисковый запрос, но это не так. И изменения коды модели для:
def self.search(search)
if search
find_all_by_name(search)
else
find(:all)
end
end
Не работает он дает мне ошибку, что вид работает с нулевым объектом, который невозможно, потому что моя база данных содержат записи.
Может кто-нибудь объяснить, что происходит? У меня сложилось впечатление, что выполняются оба условия моей модели. По крайней мере, это то, что я сказал в каждом случае в каждом случае. Пожалуйста, совет.
в контроллере @products = Product.search ("Яблоко") должны быть @products = Product.search (params [: term]) и в вашей модели перед выполнением if, search = nil if search == "" – Rafal