【问题标题】:Passing a hidden field based on the submit button根据提交按钮传递隐藏字段
【发布时间】:2023-03-26 08:11:01
【问题描述】:

如何根据单击的按钮传递 hidden_​​field?

我有多种付款方式,stripe 和 paypal。我想根据用于数据的方法和创建付款的难易程度传递一个参数。

例如:

<input type="submit" class="a"></input>

已提交,我要order.payment_method = a

如果:

<%= form.submit, id: "b" %>

已提交,我要order.payment_method = b

有没有唯一的方法可以做到这一点?

我也会标记 javascript 以防万一

【问题讨论】:

  • 你为什么不让它成为一个单选选项并将项目设置为按钮? payment 和 payment_method 之间可能已经存在belongs_to 关系,对吧?否则,这将是我要构建的第一件事。
  • 或者如果你不想有一个单独的模型(我不明白为什么你不应该在这种情况下),查看枚举:api.rubyonrails.org/v5.2.1/classes/ActiveRecord/Enum.html

标签: javascript jquery ruby-on-rails ruby


【解决方案1】:

您可以使用隐藏类型的输入字段来传递任何参数值。例如

<input type="hidden" id="paypal" name="paypalPayment" value="paypal">

希望这会有所帮助。 对于导轨,也许下面的链接可以提供帮助 https://apidock.com/rails/ActionView/Helpers/FormHelper/hidden_field

【讨论】:

  • 不幸的是,“值”已被输入,似乎没有办法解决它,因为该值显示按钮的单词,我正在尝试解决方法,但是不知道如何以另一种方式在按钮上显示文字。
  • 好的。然后在单击时使用javascript添加值。在我的一个网络应用程序中,我使用了 然后使用 jQuery,我设置了值 $("#chosenBy").val("someone")跨度>
【解决方案2】:

用JS解决:

<input type="submit" value="Submit" %>" name="paypal" onclick= "return handleClick('paypal')"></input>

function handleClick(val){
    document.getElementById('hiddenMethod').value = val;
}

使用 rails/ruby 语法有点不同,但要点就在那里。现在都可以正常使用了。

【讨论】:

    【解决方案3】:

    您不需要额外的隐藏输入。提交表单时,提交按钮本身可以像任何其他输入一样传递值。如果表单中有几个提交按钮,则只有点击的那个会通过。

    每个提交按钮都应该有一个名称和一个值。

    <%= form.submit "a", name: "payment_method" %>
    <%= form.submit "b", name: "payment_method" %>
    

    此外,在您的情况下,您应该使用button 而不是submit。这将允许您设置不同于其文本的按钮值。

    <%= form.button "", value: "a", name: "payment_method", type: "submit" %>
    <%= form.button "", value: "b", name: "payment_method", type: "submit" %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-12
      • 2018-12-02
      相关资源
      最近更新 更多