Перенаправление на тот же метод контроллера в Rails - PullRequest
0 голосов
/ 10 марта 2012

Предположим, есть стандартный books_controller, где мне нужно изменить метод индекса.Если params [: value] равен nil, мне нужно присвоить ему значение not_nil, а затем перезагрузить ту же страницу.Что я делаю в методе index:

redirect = params[:value].nil?
params[:value] ||= some_value_which_is_not_nil
redirect_to books_path if redirect

Проблема в том, что после перенаправления params [: value] снова nil!Как передать переменную params в метод redirect_to или есть другой способ сохранить это значение?

Ответы [ 4 ]

0 голосов
/ 10 марта 2012

Если вы устанавливаете значение nil на какое-то значение, оно должно быть в том же действии, которое вы собираетесь перезагрузить ... почему бы просто не продолжить обработку с установленным значением без перезагрузки?

Я не вижу, что вам вообще нужно перезагрузить действие.

0 голосов
/ 10 марта 2012

Я не совсем уверен, что это то, что вы ищете, но вы можете передавать параметры в path методы.

books_path(:value => 1) приводит к /books?value=1.

0 голосов
/ 10 марта 2012
def index
 ## RELOAD same page if params value is nil
 params[:value] || redirect_to books_path(:value => "some_value_which_is_not_nil")
 # Do my own processing!
end
0 голосов
/ 10 марта 2012

Хэш params не работает таким образом.HTTP не имеет состояния - назначения не сохраняются между запросами.

Это означает, что хеш params заполняется из параметров GET / POST в запросе каждый раз, когда выполняется запрос.Если вы хотите перенаправить на ту же страницу и сохранить этот параметр, вы должны передать его как параметр GET.

redirect_to books_path(:value => some_value_which_is_not_nil) if redirect
...