Rails simple_form:在提交

时间:2018-05-29 10:10:05

标签: ruby-on-rails ruby forms parameters simple-form

我希望在用户提交表单时传递自定义参数。我发现了这个question,但我仍然没有找到它。

这些是我在表单页面上的参数:{"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 :(得分:1)

只需声明您的密码后重置路径,以便传递参数:

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,因为它可能会泄漏数据。

答案 1 :(得分:0)

您在评论中描述了一些参数传递给控制器​​然后发生一些重定向的情况。因此,重定向会触发一些新操作,而这些操作并不知道哪些参数已传递给prev操作。

您必须手动传递参数。例如

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

但是,如果你想显示与使用渲染之前相同的视图而不是重定向。