2

如附图所示,我想将登录表单和忘记密码表单合并为一个表单。我正在使用 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

一种方法是创建一个新的控制器方法来读取提交按钮的值。

基于该值,您应该能够在 2 个不同的操作之间进行路由。

另一种可能更现代、更简洁的方法是将 javascipt onclick 事件附加到其中一个按钮上,该按钮将忽略表单操作并提交到不同的路由。

粗略的例子:

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

来不及测试这个,所以请以它为例。

于 2012-07-06T08:40:27.983 回答