我有以下rails表单(有效)但我想删除submit_tag,并在选择单选按钮后立即提交表单。我该怎么做?
<% 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 %>
答案 0 :(得分:8)
所以我找到了精确的解决方案(感谢输入人员,它帮助我重新定义了我的Google搜索)。每个人都在正确的轨道上,但没有一个人在现场。
所需要的只是添加'false,:onclick =&gt; “this.parentNode.submit();”'到radio_button_tag表单助手。是否选择了错误,其余的是显而易见的。
现在正确的解决方案如下:
<% 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 %>
答案 1 :(得分:1)
您需要将onClick事件添加到调用this.formName.submit()的单选按钮,其中formName是您的表单ID。当您单击单选按钮时,这将触发提交事件。
答案 2 :(得分:1)
我正在做类似的事情,所以这个问题确实有帮助。
除了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 %>
希望它会对某人有所帮助。
答案 3 :(得分:0)
使用Javascript
使用每个单选按钮的onclick()事件来调用在提交按钮上调用submit()的函数。
我对Rails中的RJS并不熟悉,但这应该相对容易。
答案 4 :(得分:0)
实现这一目标的一个很棒的方法是使用lowpro和prototype。这样您就可以将所有事件处理程序都放到javascript中,这样它们就不会污染您的视图代码。这是处理javascript事件的一种非常流畅的方式。强烈推荐。