【问题标题】:Submitting Rails Form on a Radio Button Selection在单选按钮选择上提交 Rails 表单
【发布时间】:2009-05-11 02:27:30
【问题描述】:

我有以下 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 %>&nbsp;<%=h i %>&nbsp;
    <% end %>
  </p>
  <p>
    <%= submit_tag "Create" %>
  </p>
<% end %>

【问题讨论】:

    标签: javascript ruby-on-rails ruby


    【解决方案1】:

    所以我找到了精确的解决方案(感谢输入的家伙,它帮助我重新定义了我的 Google 搜索)。每个人都在正确的轨道上,但没有一个是正确的。

    所需要的只是将 'false, :onclick => "this.parentNode.submit();"' 添加到 radio_button_tag 表单助手。选不选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 %>
    

    【讨论】:

      【解决方案2】:

      您需要向调用 this.formName.submit() 的单选按钮添加一个 onClick 事件,其中 formName 是您的表单 ID。这将在您单击单选按钮时触发提交事件。

      【讨论】:

        【解决方案3】:

        我正在做类似的事情,所以这个问题真的很有帮助。

        进一步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 %>
        

        希望对某人有所帮助。

        【讨论】:

          【解决方案4】:

          使用 Javascript

          使用每个单选按钮的 onclick() 事件调用在提交按钮上调用 submit() 的函数。

          我对 Rails 中的 RJS 不是很熟悉,但这应该相对容易。

          【讨论】:

            【解决方案5】:

            一种不显眼地实现这一目标的绝妙方法是使用 lowpro 和原型。这样,您可以将所有事件处理程序放入您的 javascript 中,这样它们就不会污染您的视图代码。这是处理 javascript 事件的一种非常巧妙的方式。强烈推荐。

            【讨论】:

            • Rails 实际上使用 Prototype 作为它的核心 JavaScript 库(我认为)用于事件注册,除了你不必搞乱 JavaScript 并简单地使用 Rails HTML 帮助器来使 JavaScript 更容易读取并自动生成。
            • 你正确的 Rails 确实会自动使用原型。问题是这些助手用非常丑陋的 javascript 污染了你的代码。我建议将 lowpro 与原型结合使用,以使您的 javascript 不引人注目,并将 javascript 代码移动到它所属的 .js 文件中。结果,您的视图代码将更加简洁。
            猜你喜欢
            • 2012-05-05
            • 2017-03-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多