JavaScript form_tag 里面如何让两个 button 分别提交到不同的控制器

jrejie · 2012年03月12日 · 最后由 jrejie 回复于 2012年03月12日 · 4140 次阅读

写 view 的时候遇到了个问题 form_tag 中有两个 button 一个是提交到 form_tag 里面的 controller,接下来一个是提交到另外一个 controller 但每次提交下面这个的时候总是跳到 form 里面设置的那个控制器,怎样才能区别这两个 button 呢,试过加 id 啊 加 name 属性啊都不行,望大家帮忙解决下,感谢

js 判断?

肯定得写 JS,修改 form 的 action 属性

简单起见可以用同一个 action 根据 submit 的值不同处理不同逻辑

试了下 input type="submit" name="button_name" 就这样硬写是没有问题的,改 button 标签这样就不行 有谁知道原理不 硬写 css 全部乱了 郁闷啊

放个 hidden field 提交前根据按钮来更改这个 hidden field 的内容,比如这样:

<input id="submit_type" name="type" type="hidden" value="save" />
<button type="submit" onclick="return submit('save');">保存</button>
<button type="submit" onclick="return submit('draft');">保为草稿</button>
<script type="text/javascript">
function submit(withType){
  $("#submit_type").val(withType);
}
</script> 

#3 楼 @Rei 正解,用一个 controller 来处理,不同的 submit value 走不同的流程既可,如果非要用两个 controller,我建议你用 Ajax 来提交。

#4 楼 @jrejie

View

<%= f.submit 'action_one' %>
<%= f.submit 'action_two' %>


Controller

case params[:commit]
when 'action_one'
  do_some_one
when 'action_two'
  do_some_two
end


遇到问题冷静下来,看看控制台日志

ok 了 感谢各位 最后还是加了段 js

需要 登录 后方可回复, 如果你还没有账号请 注册新账号