2个按钮,1个表格

时间:2009-05-21 19:59:10

标签: ruby-on-rails forms

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

<% 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 => "Approve"

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

感谢。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

我认为提交对于每个表单都是唯一的(HTML事物)所以yopu有两个选项:

  1. 使用2个表单,每个表单提交1个,这会导致相同的操作(CSS喜欢它)
  2. 使用2个按钮类型控件(即不提交)并同时提交onClick事件(需要javascript)