时间:2010-07-26 05:48:48

标签: ruby-on-rails forms action

6 个答案:

答案 0 :(得分:64)

答案 1 :(得分:7)

我们在rails中使用advanced constraints解决了。

我们的想法是拥有相同的路径(因此具有相同的命名路由和操作),但约束路由到不同的操作。

resources :plan do
  post :save, constraints: CommitParamRouting.new("Propose"), action: :propose
  post :save, constraints: CommitParamRouting.new("Finalize"), action: :finalize
end

CommitParamRouting是一个简单的类,它有一个方法matches?,如果commit参数匹配给定的实例attr,则返回true。值。

这可用作宝石commit_param_matching

答案 2 :(得分:6)

也可以在 form_for 帮助器上完成,就像这样

otherwise

并且控制器上的逻辑相同

 <%= f.submit "Publish",name: "publish", class: "tiny button radius success" %>
 <%= f.submit 'Mark as Draft', name: "draft", class: "tiny button radius " %>

答案 3 :(得分:1)

答案 4 :(得分:0)

您还可以在提交按钮上设置一些data属性,并使用JavaScript在点击其中一个按钮时更改form操作

答案 5 :(得分:0)

通常我使用John Topley给出的建议(见上面的答案)。 另一种方法是在单击提交按钮时使用JQuery / JS更改表单操作属性 例如:

form_tag({} ,:method => 'post', :id => 'reports_action') do 
   .......
   ....... 
  submit_tag 'submit',  :onclick => "return changeAction();"
end

然后......

function changeAction(){
   $('#reports_action').attr('action','my_new_action');
}   
相关问题