将“记住我”复选框转到提交

时间:2012-06-28 19:35:12

标签: ruby-on-rails ruby-on-rails-3

我目前正在使用Rails的“Devise”插件来处理登录/身份验证。我使用非常基本的form_for标记来处理登录表单。这是代码:

<div class="well-outer splash-signin-block">
  <div class="well-inner">
    <h2>Sign in</h2>
    <div>
      <%= form_for(resource, as: resource_name, url: user_session_path, html: {
        class: "form-inline"
      }) do |f| %>
        <p><%= f.text_field :email, placeholder: "Email", autofocus: true %></p>
        <p><%= f.password_field :password, placeholder: "Password" %></p>
        <p>
          <%= f.submit 'Sign in', class:"btn btn-primary btn-large" %>
          <%= f.check_box :remember_me, class: "checkbox" %>
          <%= f.label :remember_me %>
        </p>
      <% end %>
    </div>
  </div>
</div>

但是,我想将“记住我”复选框更改为按钮。用户体验是他们可以点击“登录”(默认操作),也可以点击“记住我”来持续登录。

在幕后,我想通过使用将resource[remember_me]属性设置为“1”的隐藏字段来实现这一点。然而作为一个铁杆新手我不知道如何编码这个。我想它需要一些javascript,这很好,但谷歌搜索只发现了AJAX-y的东西,我不认为这是必要的。不过,如果有必要,我不会回避它。

1 个答案:

答案 0 :(得分:2)

您将创建一个带有一些id的按钮,然后使用javascript绑定到该按钮的click事件。单击该按钮时,您想要更改隐藏字段的值。如果您使用的是jQuery,那就像......

   $('#id_of_button').click(function() {
     $('#id_of_hidden_field').val("true");
   });

然后你就像通常那样检查控制器中的那个值。

如果你没有使用jQuery,那就不是更多的工作,我只是不知道它在我的头脑中。顺便说一句,此代码应位于assets / javascript文件夹中的.js文件中