我有一个看起来像这样的简单形式
<% 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"
。
是否有人知道与此或其他(简单)方法相关的错误以执行相同的功能?
感谢。
答案 0 :(得分:1)
JS lib(Prototype我猜)不知道按下了什么按钮。它只是序列化Ajax请求的表单字段值。使用普通表单POST时,浏览器会将正确的值附加到提交参数。
您可以添加隐藏的表单字段(例如操作)。然后添加JS代码以在按下适当的按钮时(以及在发送Ajax请求之前)设置隐藏字段的所需值。
答案 1 :(得分:1)
另一个选择是覆盖第二个按钮的“name”参数。
<%= f.submit "Deny", :name => "commit_deny" %>
答案 2 :(得分:0)
我认为提交对于每个表单都是唯一的(HTML事物)所以yopu有两个选项: