我该如何使用正确的Rails 3格式通过链接提交表单?谢谢。
<%= form_for @post do |f| %>
<%= f.label :title %><br>
<%= f.text_field :title %>
<p><%= f.submit %></p>
<% end %>
我的代码示例。
我该如何使用正确的Rails 3格式通过链接提交表单?谢谢。
<%= form_for @post do |f| %>
<%= f.label :title %><br>
<%= f.text_field :title %>
<p><%= f.submit %></p>
<% end %>
我的代码示例。
对于通过谷歌搜索到这里的人,我有一个对Zequez答案的改进。不要使用他给出的方法,而是将此方法添加到应用程序助手中:
def link_to_submit(*args, &block)
link_to_function (block_given? ? capture(&block) : args[0]), "$(this).closest('form').submit()", args.extract_options!
end
如Zequez所述,对于简单的链接,您可以在视图中执行以下操作:
<%= link_to_submit 'Submit Form' %>
...对于更复杂的按钮,你可以传递HTML选项和一个块用于链接内部。例如,如果你使用Twitter Bootstrap,这让你可以添加CSS类、格式和图标。
<%= link_to_submit( class: 'btn btn-primary' ) do %>
<strong>Submit</strong> the Form <i class="icon-arrow-right"></i>
<% end %>
只要链接是表单的子元素(也就是说,只要从form_for
块中的某个位置调用link_to_submit
),JQuery代码就会起作用。
link_to_function
的存在都是你的功劳。 - Jazzf.submit_link
上完成吗? - stevenspiel在这个上下文中,“正确”是一个棘手的词 ;)。有人可能会问,为什么你不只是拿一个button
元素并让它看起来像一个链接呢?
无论如何——你不能用纯HTML实现这个(至少我不知道)。使用像jQuery这样的JavaScript框架,你可以简单地做这样的事情:
$('a').click(function(){
$('form').submit();
return false;
});
Rails 2.3.x有一个link_to_remote
助手,它可以让你指定一个:submit
参数(= DOM元素的ID,默认为父表单)。因此,你可以编写以下代码:
link_to_remote 'submit', :url => {…}, :submit => "my_form"
但是随着Rails 3推动使用UJS,这个助手函数已经被移除了。
您可以将以下内容添加到应用程序助手中:
def link_to_submit(text)
link_to_function text, "$(this).closest('form').submit()"
end
然后在您的视图文件中,您只需要调用
link_to_submit 'Submit Form'
链接必须是表单的子元素。
<%= link_to t("translate.submit"), "#", class: "make it beautiful", :onclick=>"$('form').submit()" %>
当然,你不一定非要使用jQuery,只需要找到表单的DOM元素即可。
<%= link_to t("translate.submit"), "#", class: "make it beautiful", :onclick=>"document.getElementById('your_form_id').submit()" %>
link_to_remote
助手已经被移除,但它被以下代码所取代:
link_to 'submit me', url_for(@post), {:remote => true, :class => 'submit_me'}
在您的情况下,您可能希望使用表单来进行AJAX操作,例如:<%= form_for @post, :remote => true do |f| %>
<%= f.label :title %><br>
<%= f.text_field :title %>
<p><%= f.submit %></p>
<% end %>
link_to 'submit me', '#', :class => 'submit_me'
$('.submit_me').click(function() {
$('form').submit();
return false;
});
https://github.com/rails/jquery-ujs/wiki/ajax
如果你想深入了解交互式的AJAX请求,请点击这里阅读一篇很棒的两部分文章。