2013-10-23 19 views
1

我正在使用提供「忘記密碼」表單和「重發確認」表單的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)

+0

你能提供一些代碼嗎?這對任何試圖回答這個問題的人都會有所幫助。 –

回答

0

最簡單的解決方案是使用javascript onkeydown偵聽器的輸入字段,該字段將更新兩個隱藏的輸入字段,用於將'重新發送確認'表單和'密碼重置'表單與輸入到可見輸入字段中的電子郵件值進行比較。電子郵件的值將被提交到按下提交按鈕的表單操作中。