【问题标题】:Rails checkbox create a submit actionRails 复选框创建提交操作
【发布时间】:2017-04-05 03:43:10
【问题描述】:

我有一个带有复选框的 rails 表单。我要做的是当用户单击复选框时,应用程序会从数据库中删除该条目。我无法弄清楚当用户选中复选框时应用程序如何做出反应(类似于单击提交按钮的操作)。我应该在我的 html 中包含什么,以便当用户单击复选框时应用程序会执行某些操作?

这是我的代码

<% @items.each do |item|%>
    <%if item.email == @user.email%>
        <%= form_for @item do |f| %>
            <%= f.check_box :to_do %>
            <%= f.label item.to_do %><br />
        <% end %>
    <%end%>
<%end%> 

我正在遍历项目,如果 item.email 和用户电子邮件之间存在匹配项,则打印出项目,旁边有一个复选框。如果需要,我可以包含更多代码。我可以进行 Ajax 调用吗?

【问题讨论】:

  • 抛开技术实现不谈,我对删除复选框操作上的内容的想法有些保留。使用复选框和提交按钮来删除很常见,因为它提供了一个确认步骤(通常后面跟着另一个确认按钮)。您是否希望用户能够使用复选框意外删除内容,这通常意味着能够在不进行任何破坏性操作的情况下切换打开和关闭?

标签: html ruby-on-rails ajax


【解决方案1】:

是的。您可以编写 AJAX 调用。

<script>
     $('#checkbox_id').change(function(){
        $.get('controller/action?item_id='+$(this).val(), function(data, status){
           /* Call back */
        })
     })
</script>

【讨论】:

    【解决方案2】:

    正如 RedBassett 所说,我不是 100% 同意让复选框立即删除条目的策略。但是,如果您的表单已经设置为删除内容,您可以这样做:

    您甚至不需要 AJAX 调用。只是普通的Jquery。向表单以及复选框添加一个类

     <%= form_for @item do |f|, :class => "form-class" %>
    
     <%= f.check_box :to_do, :class => "checkbox-class" %>
    

    在您的 JS 文件中,使用 Jquery 告诉表单在用户单击复选框时提交。

    $(".checkbox-class").on("click", function (){
      $(".form-class").submit();
    });
    

    注意:这实际上会提交表单,就好像您选中了复选框然后按下了“提交”按钮,因此您需要在控制器中处理表单提交,如果您想留在同一页面,您将需要重定向回同一页面,因为此操作将导致重新加载/重定向

    【讨论】:

      【解决方案3】:

      使用 borbesaur 答案,但请记住,您只需将remote: true 选项添加到您的表单,这样 Rails 就可以使用 ajax 提交表单,而您可以避免再次重新加载所有页面。 :)

      【讨论】:

        猜你喜欢
        • 2015-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-01
        • 1970-01-01
        • 2012-10-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多