【问题标题】:2 buttons, 1 form2 个按钮,1 个表格
【发布时间】:2009-05-21 19:59:10
【问题描述】:

我有一个看起来像这样的简单表单

<% remote_form_for post, :url => post_path(post), :method => :put do |f| -%>
  <%= f.submit "Approve" %>
  <%= f.submit "Deny" %>
<% end -%>

哪个渲染

<input type="submit" value="Approve" name="commit"/>
<input type="submit" value="Deny" name="commit"/>

在我的控制器中,我有以下逻辑

@post.approved =  params[:commit] == 'Approve' ? true : false

所以问题是,如果用户单击“批准”按钮或“拒绝”按钮,发送的参数是 :commit =&gt; "Approve"

是否有人知道与执行相同功能的这种或其他(简单)方式相关的错误?

谢谢。

【问题讨论】:

  • 出于某种原因,我担心任何标题都遵循“2 X,1 Y”的形式
  • 对不起,它可能被认为是不好的“形式”,但我想要一些能引起你注意的东西;)
  • @vrish88,我不认为它与糟糕的形式有关,而是与您拥有的关联有关。

标签: ruby-on-rails forms


【解决方案1】:

JS lib(我猜是原型)不知道按下了什么按钮。它只是序列化 Ajax 请求的表单字段值。使用普通形式的 POST 时,浏览器会将正确的值附加到提交参数。

您可以添加隐藏的表单域(例如操作)。然后添加 JS 代码以在按下相应按钮时(以及在发送 Ajax 请求之前)设置隐藏字段的所需值。

【讨论】:

    【解决方案2】:

    另一种选择是覆盖第二个按钮的“名称”参数。

    <%= f.submit "Deny", :name => "commit_deny" %>
    

    【讨论】:

    【解决方案3】:

    我认为 Submit 每个表单都是唯一的(HTML 事物)所以你有两个选择:

    1. 使用 2 个表单,每个表单提交 1 个,这会导致相同的操作(CSS 根据您的喜好)
    2. 使用 2 个按钮类型的控件(即不提交)并使用两个 onClick 事件提交(需要 JavaScript)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-10
      • 1970-01-01
      • 2013-05-20
      • 1970-01-01
      • 2017-06-13
      • 2021-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多