2

添付画像のように、サインインフォームとパスワードを忘れた方のフォームを1つのフォームにまとめたいです。DEVISE と RoR 3.2.5 を使用しています。

ここに画像の説明を入力

サインイン フォームは次のようになります。

= simple_form_for(resource, :as => resource_name, :url => session_path(resource_name), :html => {:class => 'form-horizontal'}) do |f|
  .inputs
    = f.input :login, :required => false, :autofocus => true, :hint => "Enter either email ID or username"
    = f.input :password, :required => false
    = f.input :remember_me, :as => :boolean if devise_mapping.rememberable?
  .form-actions{ :style => "padding-left: 160px;"}
    = f.button :submit, "Sign in", :class => "btn btn-primary"

パスワードを忘れた場合のフォームは次のようになります。

= simple_form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :post }) do |f|
  = f.error_notification
  .inputs
    = f.input :login, :required => true, :hint => "Enter either email ID or username"
  .form-actions{ :style => "padding-left: 160px;"}
    = f.button :submit, "Send me reset password instructions", :class => "btn btn-primary"
4

1 に答える 1

0

1 つの方法は、送信ボタンの値を読み取る新しいコントローラー メソッドを作成することです。

その値に基づいて、2 つの異なるアクション間でルーティングできるはずです。

もう 1 つの (そしておそらくよりモダンでクリーンな) 方法は、フォーム アクションを無視して別のルートに送信するボタンの 1 つに javascipt onclick イベントをアタッチすることです。

大まかな例:

<script>
  $('#forgot-submit-button').click(function(){
    $('#my-form').attr('action','<%= forgot_password_path %>').submit()
  });
</script>

これをテストするには時間が足りないので、例として扱ってください。

于 2012-07-06T08:40:27.983 に答える