2014-12-20 2 views
0

Я работаю над сайтом, который дает пользователю две возможности ввести свой почтовый индекс в качестве поискового запроса: на домашней странице есть поле ввода, а другое - на странице результатов поиска, если они выбирают введите другой почтовый индекс.Условные заявления с redirect_to

Если почтовый индекс, который они отправляют на домашней странице, не соответствует ни одному из почтовых индексов в базе данных, пользователь должен быть перенаправлен обратно на главную страницу. Но если они вводят новый почтовый индекс на странице результатов поиска, эта страница должна просто перезагрузить и отобразить соответствующее сообщение об ошибке. Я не знаю, как написать условный оператор для выполнения В принципе, мне нужно что-то вдоль этих линий:

#search_controller.rb 

    if @postal_code.nil? 
     flash[:notice] = "Plans available for residents of Ontario or Alberta, only." 
    if current_page?(search_path) 
     redirect_to search_path 
    else 
     redirect_to root_path 
    end 
    else 
    ..... 

Если я запускаю этот код, я получаю эту ошибку в моих журналах Heroku: undefined method 'current_page?'

Каков правильный путь?

ответ

1

Метод current_page? доступен только для просмотра.

Вероятно, самое простое решение, чтобы пойти с, чтобы оказать скрытое поле в форме поиска, которая имеет имя контроллера в качестве значения:

`<%= hidden_field_tag :source, controller_name %>` 

Тогда в вашем контроллере вы можете просто проверить, если значение параметра спички имя контроллера поиска:

if params[:source] == controller_name 
    redirect_to search_path 
end 
+0

Спасибо! Я попробую – Francine

+0

ОК. Дайте мне знать, если это сработает для вас. – fivedigit

+0

Он работает! Я просто должен был установить его на 'redirect_to: back', чтобы он также перезагружал поисковые запросы – Francine

Смежные вопросы