Rails复选框创建提交操作

时间:2016-11-21 16:54:40

标签: html ruby-on-rails ajax

我有一个带复选框的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电话吗?

3 个答案:

答案 0 :(得分:2)

正如RedBassett所说,我并非100%确定我同意让复选框立即删除条目的策略。但是,如果您已经设置了该表单以删除内容,则可以这样执行:

您甚至不需要进行AJAX通话。只是常规的Jquery。在表单中添加一个类,以及复选框

Math.round(int)

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

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

 <%= f.check_box :to_do, :class => "checkbox-class" %>

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

答案 1 :(得分:0)

是。你可以写一个AJAX调用。

protocol Fooable
{
    init()
}

extension Int: Fooable {}
extension String: Fooable {}

func foo<T: Fooable>() -> T
{
    return T()
}

let x: String = foo() // x is assigned the empty string
let y: Int = foo()    // y is assigned 0

答案 2 :(得分:0)

使用 borbesaur 回答,但请记住,您只需在表单中添加remote: true选项,以便Rails可以使用ajax提交表单,并避免重新加载所有页面。 :)