【发布时间】:2015-11-14 02:00:46
【问题描述】:
我想将下面的代码转换为form_for 或form_tag。
<form onsubmit="foo()">
我该怎么办?我不想连接另一个页面(action="/URL")。
我只想在提交此表单时触发function foo()。
【问题讨论】:
标签: javascript ruby-on-rails ruby
我想将下面的代码转换为form_for 或form_tag。
<form onsubmit="foo()">
我该怎么办?我不想连接另一个页面(action="/URL")。
我只想在提交此表单时触发function foo()。
【问题讨论】:
标签: javascript ruby-on-rails ruby
使用form_tag 或form_for 应该很容易做到这一点。示例:
<%= form_for @model, :html => { :onsubmit => "foo()" } %>
<% end %>
或
<%= form_tag '#', :html => { :onsubmit => "foo()" } %>
<% end %>
【讨论】:
使用form_tag 比使用form_for 更容易。试试这个:
<%= form_tag '#', onsubmit: "foo();" do %>
<% end %>
另外,不要忘记在foo() 内,它应该是return false,这样表单才不会真正提交!
【讨论】:
form_for,您需要一个模型作为参数之一。由于您没有使用表单更新任何模型(仅调用函数),因此使用 form_tag 会更有意义,因为它只需要一个 url。
最好将foo(); 函数放入Rails 中的unobtrusive 资产管道:
#app/assets/javascripts/application.js
var foo = function(e) {
e.preventDefault();
...
};
$(document).on("submit", "#form", foo(e));
您可以将其与 ...
<%= form_tag "#", id: "form" do %>
【讨论】: