Сохранение результатов поиска после отправки запроса (рельсы) - PullRequest
0 голосов
/ 16 ноября 2011

Я хотел бы сделать так, чтобы после того, как пользователи отправили свой поиск, выбранный параметр оставался выбранным после перезагрузки формы поиска.Вот мой код для одного из этих полей выбора:

    <div><%= f.select :tod_like, Course.tod_array, {:include_blank => true, :selected => params[:search][:tod_like], :class=>"float_and_margin"} %></div>

Код ключа:

:selected => params[:search][:tod_like]

Когда я обновляю свою страницу, я получаю следующую ошибку:

You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.[]

Я знаю, что получаю эту ошибку, потому что есть params [: search] [: tod_like] пусто.Как установить: выбрано так, чтобы оно оставалось пустым, если пользователь не отправил форму, но является ли отправка, в противном случае?Я пытался использовать троичный оператор, но это не сработало.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 16 ноября 2011

Хм, я решил эту проблему, определив троичный оператор в контроллере курсов, а затем передав эту переменную экземпляра в соответствующее представление.

@tod_results = params[:search] == nil ? :blank : params[:search][:tod_like]

<div><%= f.select :tod_like, Course.tod_array, {:include_blank => true, :selected => @tod_results, :class=>"float_and_margin"} %></div>

Ключевое различие между этим кодом и предыдущим троичным оператором, который я пробовал, заключается в том, что я проверяю, имеет ли params [: search] ноль, а не если params [: search] [: tod_like] равен nil. Поскольку params [: search] уже равен nil, я получил сообщение «вы ожидали массив, но получил nil», когда попытался использовать params [: search] [: tod_like].

Спасибо за ваши ответы!

0 голосов
/ 16 ноября 2011

Правильно ли указан ключ params?

Я понимаю, что форма f для экземпляра курса, так что это не будет похоже на

@course.tod_like = params[:search][:tod_like] ? params[:search][:tod_like] : ""

вверху функции, которая генерирует функцию поиска (вы упомянули, что пытались использовать троичный оператор, но одновременно заменили опцию: selected?

Then: selected => @course.tod_like в теге выбора?

<div><%= f.select :tod_like, Course.tod_array, {:include_blank => true, :selected => @course.tod_like, :class=>"float_and_margin"} %></div>
...