在多个表单之间共享输入字段

时间:2013-10-23 18:44:24

标签: ruby-on-rails forms devise

我正在使用Devise gem,它提供了“忘记密码”表单和“重新发送确认”表单。两者都包含电子邮件的输入字段和提交按钮。 我想将这两个表单合并为一个,这样就只有一个电子邮件字段和两个提交按钮。根据是否按下“重置密码”或“重新发送确认”按钮,表单将提交给相关操作。

更新 基本上,我想有这两种形式:

<%= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :post }) do |f| %>
  <%= devise_error_messages! %>
  <div><%= f.label :email %><br />
  <%= f.email_field :email, :autofocus => true %></div>
  <div><%= f.submit "Send me reset password instructions" %></div>
<% end %>

<%= form_for(resource, :as => resource_name, :url => confirmation_path(resource_name), :html => { :method => :post }) do |f| %>
  <%= devise_error_messages! %>
  <div><%= f.label :email %><br />
  <%= f.email_field :email, :autofocus => true %></div>
  <div><%= f.submit "Resend confirmation instructions" %></div>
<% end %>

分享f.label:电子邮件输入,但发布按下按钮的操作。例如,当我按:email按钮时,confirmation_path值将提交到"Resend confirmation instructions",当我按下f.submit“发送重置密码说明”:email值时将发布到password_path(resource_name)

1 个答案:

答案 0 :(得分:0)

最简单的解决方案是使用带有javascript onkeydown侦听器的输入字段,该字段将更新“重新发送确认”表单和“密码重置”表单的两个隐藏输入字段,并将电子邮件值输入到可见输入字段。然后,电子邮件值将提交到已按下提交按钮的表单操作中。