ruby-on-rails - 将 'Remember Me' 复选框转入提交

标签 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”来实现。然而,作为一个 Rails 新手,我不知道如何编写这个代码。我想它需要一些 javascript,这很好,但是谷歌搜索只找到了 AJAX-y 的东西,我认为这是没有必要的。不过,如果有必要,我不会回避它。

最佳答案

您将创建一个带有某个 id 的按钮,然后使用 javascript 绑定(bind)到该按钮的单击事件。单击该按钮时,您想要更改隐藏字段的值。如果你使用 jQuery,它会是这样的......

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

然后您只需像平常一样在 Controller 中检查该值即可。

如果您不使用 jQuery,则不需要做太多工作,我只是不知道它在我的脑海中。顺便说一句,此代码应位于 asset/javascript 文件夹中的 .js 文件中

关于ruby-on-rails - 将 'Remember Me' 复选框转入提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11251642/

相关文章:

javascript - sinatra javascript 调用

ruby-on-rails - rails 3 : User Created custom forms?

ruby-on-rails - Rails 控制台选项卡完成速度慢?

sql - 使用某些参数查找没有子项的父记录

ruby-on-rails - 仅转换具有回形针样式的特定文件类型的图像

ruby-on-rails - 我需要将非数据库数据类创建为 Rails 3 "model",还是只是/lib 区域中的基本类?

ruby-on-rails - 模型关联问题

ruby-on-rails - 映射几个变量

ruby-on-rails - 如何使用capistrano bundle 安装期间指定Gemfile.lock的路径

ruby-on-rails - 数据库 :migrate (PostgreSQL) fails on Rails deployment with Capistrano