Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过单选按钮选择提交Rails表单_Javascript_Ruby On Rails_Ruby - Fatal编程技术网

Javascript 通过单选按钮选择提交Rails表单

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 %&

我有下面的rails表单(可以正常工作),但我想删除submit_标签,并在单选按钮选择后立即让表单提交。我该怎么做

<% form_tag({ :controller => "votes", :action => "create", :id => @item.id } ) do  %>
  <p>
    <% for i in 1..10 do %>
      <%=  radio_button_tag :rating, i %>&nbsp;<%=h i %>&nbsp;
    <% 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();" %>&nbsp;<%=h i %>&nbsp;
    <% 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();" %>&nbsp;<%=h i %>&nbsp;
    <% 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文件中。因此,您的视图代码将更加清晰。