Rails simple_form: передача параметров при отправке - PullRequest
0 голосов
/ 29 мая 2018

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

Вот мои параметры на странице формы: {"email"=>"user@example.com", "controller"=>"devise/passwords", "action"=>"new"}

Вот моя форма:

%h2 Forgot your password?
= simple_form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }) do |f|   =
f.error_notification   
.form-inputs
  = f.input :email, required: true, autofocus: true, input_html: { value: params[:email] }   
.form-actions
  = f.button :button, 'Submit', type: 'submit', name: 'email', value: params[:email]

Было ли это поведение устаревшим в какой-то момент или я что-то делаю неправильно?Я использую ruby ​​2.5.1 и rails 5.2.

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Просто укажите свой путь после сброса пароля, чтобы вы могли передать параметр:

def after_sending_reset_password_instructions_path_for(resource_name) 
  my_path(email: resource.email)
end

Это должно работать, если ваш путь к вашей странице успешного сброса пароля - это collection путь.Если это путь member, просто добавьте ресурс, например:

 def after_sending_reset_password_instructions_path_for(resource_name) 
   my_path(resource, email: resource.email)
 end

Но я не рекомендую использовать member, поскольку это может привести к утечке данных.

0 голосов
/ 29 мая 2018

Вы описываете в комментариях ситуацию, когда некоторые параметры были переданы в контроллер, а затем происходит некоторое перенаправление.Итак, перенаправление действительно запускает какое-то новое действие, которое не знает, какие параметры были переданы в предыдущее действие.

Вы должны передать эти параметры вручную.Например,

redirect_to resource_path(resource, email: params[:email])

Но если вы хотите показать то же представление, что и раньше, используйте render вместо redirect.

...