【问题标题】:Best way to submit a value with a button in a wizard form使用向导表单中的按钮提交值的最佳方式
【发布时间】:2015-02-20 15:20:15
【问题描述】:

我一直在尝试创建一个基本上是一系列是或否问题的向导表单。表单中还有几个页面,用户必须在其中选择多个选项才能继续。

目前所有的对象参数大多是布尔值,但我见过的所有向导示例都涉及基本形式(text_fields、check_box 等)。

我想我也许可以做这样的事情:

<div class="button1">
    <%= f.hidden_field :newsletter, value: "1" %>
    <%= f.submit "Yes" %>
</div>

<div class="button2">
    <%= f.hidden_field :newsletter, value: "0" %>
    <%= f.submit "No" %>
</div>

但它似乎并没有节省价值。 我正在为向导使用 wicked gem,并且正在关注 this RailsCast tutorial

注意:像 text_fields 这样的普通字段保存,而不是这些按钮布尔值。

【问题讨论】:

  • 您尚未包含整个表单,但如果我的猜测是正确的,那么您在同一表单中同时拥有隐藏的 newsletter=1 和 newsletter=0。那将是一个问题。为了获得更好的帮助,请包含您的服务器端代码以接受视图的值和更多内容,尤其是包括整个表单。

标签: javascript ruby-on-rails


【解决方案1】:

这些按钮和隐藏字段都采用相同的形式。所以,任何一个按钮都会提交表单,当表单提交时,它会将所有字段的值收集到参数中。

您可以做的是将按钮本身变成输入,通过参数发送。这是通过“名称”和“值”属性完成的,就像任何其他属性一样:

<input type="submit" value="foo" name="bar" />
<input type="submit" value="chunky" name="bacon" />

现在,如果您使用第一个按钮提交,您将在 params 中获得:bar =&gt; "foo",如果您使用第二个按钮提交,您将获得:bacon =&gt; "chunky"

常规名称是“提交”。当您使用 rails submit_tag 时,它会将“name”设置为“commit”,并将“value”设置为按钮的文本。因此,您应该在参数中看到:commit =&gt; "Yes":commit =&gt; "No",并相应地更改您的逻辑。

【讨论】:

    【解决方案2】:

    最好使用jQuery触发事件并相应添加隐藏输入

    <div class="button1">
      <%= f.submit "Yes", class: "wizard-btn" %>
    </div>
    
    <div class="button2">
      <%= f.submit "No", class: "wizard-btn" %>
    </div>
    ... ...
    

    示例咖啡脚本代码如下:

    jQuery ->
      $(".wizard-btn").on "click", (e) ->
        e.preventDefault()
        thisForm = $(".wizard-form")
        hideDiv = "<input type=\"hidden\" name=\"newsletter\" />"
        if $(this).val() == "Yes"
          thisForm.append $(hideDiv).val("1")
        else if $(this).val() == "No"
          thisForm.append $(hideDiv).val("0")
        thisForm.get(0).submit()
    

    我假设您的表单的类名为:wizard-form

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-09
      • 2012-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多