Javascript 通过单选按钮选择提交Rails表单
我有下面的rails表单(可以正常工作),但我想删除submit_标签,并在单选按钮选择后立即让表单提交。我该怎么做Javascript 通过单选按钮选择提交Rails表单,javascript,ruby-on-rails,ruby,Javascript,Ruby On Rails,Ruby,我有下面的rails表单(可以正常工作),但我想删除submit_标签,并在单选按钮选择后立即让表单提交。我该怎么做 <% form_tag({ :controller => "votes", :action => "create", :id => @item.id } ) do %> <p> <% for i in 1..10 do %> <%= radio_button_tag :rating, i %&
<% form_tag({ :controller => "votes", :action => "create", :id => @item.id } ) do %>
<p>
<% for i in 1..10 do %>
<%= radio_button_tag :rating, i %> <%=h i %>
<% end %>
</p>
<p>
<%= submit_tag "Create" %>
</p>
<% end %>
“投票”,:action=>“创建”,:id=>@item.id})do%>
使用Javascript
使用每个单选按钮的onclick()事件调用调用submit按钮上的submit()函数
我不太熟悉Rails中的RJS,但这应该相对容易。您需要在单选按钮中添加一个onClick事件,该事件称为.formName.submit()其中formName是您的表单ID。当您单击单选按钮时,这将触发提交事件。通过lowpro和prototype可以轻松实现这一点。这样,您就可以将所有事件处理程序输出到javascript中,这样它们就不会污染您的视图代码。这是一种处理javascript事件的非常灵活的方法。强烈推荐。因此我找到了精确的解决方案(感谢输入人员,它帮助我重新定义了谷歌搜索)。每个人都在正确的轨道上,但没有一个人在正确的轨道上 只需将'false,:onclick=>“this.parentNode.submit();””添加到单选按钮标签表单帮助器。无论是否选择false,其余的都很明显 现在,正确的解决方案如下所示:
<% form_tag({ :controller => "votes", :action => "create", :id => @item.id } ) do %>
<% for i in 1..10 do %>
<%= radio_button_tag :rating, i, false, :onclick => "this.parentNode.submit();" %> <%=h i %>
<% end %>
<% end %>
“投票”,:action=>“创建”,:id=>@item.id})do%>
“this.parentNode.submit();”%>
我也在做类似的事情,所以这个问题真的很有帮助
根据Ash的回答,我发现上面的onclick函数不起作用,我做了一些更改,下面的表单对我来说很好:
<% form_tag({ :controller => "votes", :action => "create", :id => @item.id } ) do %>
<% for i in 1..10 do %>
<%= radio_button_tag :rating, i, false, :onclick => "this.form.submit();" %> <%=h i %>
<% end %>
<% end %>
“投票”,:action=>“创建”,:id=>@item.id})do%>
“this.form.submit();”%>
希望它能对其他人有所帮助。Rails实际上使用Prototype作为事件注册的核心JavaScript库(我认为),只是您不必乱搞JavaScript,只需使用Rails HTML助手,就可以使JavaScript更易于阅读和自动生成。您的Rails会自动使用Prototype。问题是这些助手用非常难看的javascript污染了您的代码。我建议将lowpro与prototype结合使用,使javascript不引人注目,并将javascript代码移动到它所属的.js文件中。因此,您的视图代码将更加清晰。