Я слежу за передачами Райана Бейтса: http://railscasts.com/episodes/37-simple-search-form
в решении моей проблемы с результатами поиска на странице с will-paginate.
Здесь он отвечает на вопрос, как решить эту проблему. Однако я попробовал их, и мне не повезло. Следуя его второму решению, я получаю ошибку NoMethod для "search_conditions" в результате.
Код:
projects/index.rhtml
<% form_tag projects_path, :method => 'get' do %>
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", :name => nil %>
</p>
<% end %>
projects_controller.rb
def index
@projects = Project.search(params[:search])
end
models/project.rb
def self.search(search)
if search
find(:all, :conditions => ['name LIKE ?', "%#{search}%"])
else
find(:all)
end
end
Его ответы:
Один из способов - вызвать метод класса «search_conditions», и вместо того, чтобы его выполнить, find просто вернет массив условий, чтобы вы могли использовать его в методе paginate.
Course.paginate (: все,: условия => Course.search_conditions (..))
Другой способ - вызвать метод «paginated_search» и вызвать его «paginate» вместо «find».
Наконец, вы можете сделать так, чтобы метод поиска принимал блок, который использует with_scope для установки условий поиска. Таким образом, вы можете вызвать «paginate» в этом блоке, и условия будут автоматически применены.
Может кто-нибудь объяснить мне, как я должен решить эту проблему? Я новичок в рельсах и, возможно, я просто неправильно понимаю, что он говорит.