我有:
= simple_form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :post}) do |f|
= f.error_notification
.input-row
= f.input :email, :required => false, :autofocus => true, placeholder: "Enter your email address", :
.submit-row
.row
.col-xs-2
.cancel
- if resource_name == :admin
= link_to "Cancel", new_admin_session_path
- else
= link_to "Cancel", new_client_session_path
.col-xs-10
= f.submit "Reset Password", :class => "btn btn-primary"
我还有params[:type]
我想将其传递到下一页,这是一封生成的电子邮件,位于app / views / accounts_mailer / reset_password_instructions.html.haml(我不知道怎么回事知道那就是它的所在地
问题是:如何在那里获取其他信息,以及如何在那里访问它?
答案 0 :(得分:0)
由于您的表单正在使用资源助手,我不知道它正在对哪个对象进行操作,我将假设它是用于User对象的。如果没有,你可以随时调整。
在顶部的/user.rb
模型文件中添加(请记住使用表单正在处理的任何对象):
attr_accessor :something
在使用表单提供视图的控制器中,您应该这样做:
@something = params[:type]
然后在您的simple_form_for
中添加:
= f.hidden_field :something, :value => @something
这会将它传递给处理您表单的控制器,您可以在此处访问它:params[:user][:something]
现在,如果用户永远不会看到此信息并保留在后端,您将跳过添加attr_accessor
,跳过在控制器中定义@something
,并跳过添加hidden_field
你的表格,而是做:
您的控制器中呈现表单的session[:something] = params[:type]
。然后你可以在任何控制器中访问它,只需记住没有点击过这个表单的用户就不会定义它。