Mar*_*iev 16 forms ruby-on-rails hyperlink
如何使用正确的rails 3格式链接提交表单?谢谢.
<%= form_for @post do |f| %>
<%= f.label :title %><br>
<%= f.text_field :title %>
<p><%= f.submit %></p>
<% end %>
Run Code Online (Sandbox Code Playgroud)
我的代码示例.
Jaz*_*azz 29
对于通过谷歌来到这里的人来说,我对Zequez的答案有所改进.而不是他给出的方法,而是将此方法添加到应用程序助手:
def link_to_submit(*args, &block)
link_to_function (block_given? ? capture(&block) : args[0]), "$(this).closest('form').submit()", args.extract_options!
end
Run Code Online (Sandbox Code Playgroud)
然后,正如Zequez所说,对于简单的链接,您可以在您的视图中执行此操作:
<%= link_to_submit 'Submit Form' %>
Run Code Online (Sandbox Code Playgroud)
...对于更复杂的按钮,您可以传递HTML选项和要在链接中使用的块.例如,如果您使用Twitter Bootstrap,则可以添加CSS类,格式和图标:
<%= link_to_submit( class: 'btn btn-primary' ) do %>
<strong>Submit</strong> the Form <i class="icon-arrow-right"></i>
<% end %>
Run Code Online (Sandbox Code Playgroud)
只要链接是表单的子节点(即,只要link_to_submit
从form_for
块中的某个地方调用),JQuery代码就可以工作.
pol*_*lau 13
在这种情况下,"正确"是一个棘手的词;).有人可能会问为什么你不仅仅是拿一个button
元素并使它看起来像一个链接?
无论如何 - 你无法用纯HTML实现这一点(至少我不知道).使用像jQuery这样的Javascript框架,您可以简单地执行以下操作:
$('a').click(function(){
$('form').submit();
return false;
});
Run Code Online (Sandbox Code Playgroud)
Rails 2.3.x有一个link_to_remote
帮助器,你可以指定一个:submit
参数(= DOM元素的ID,默认是父表单).所以你能够写:
link_to_remote 'submit', :url => {…}, :submit => "my_form"
Run Code Online (Sandbox Code Playgroud)
但随着Rails 3向UJS的推动,这个助手已经消失了.
Zeq*_*uez 13
您可以将以下内容添加到应用程序助手:
def link_to_submit(text)
link_to_function text, "$(this).closest('form').submit()"
end
Run Code Online (Sandbox Code Playgroud)
然后在您的视图文件中,您可以调用
link_to_submit 'Submit Form'
Run Code Online (Sandbox Code Playgroud)
并且链接必须是表单的子级.
使用jquery,这种单线程可以很好地用于简单的形式.
<%= link_to t("translate.submit"), "#", class: "make it beautiful", :onclick=>"$('form').submit()" %>
Run Code Online (Sandbox Code Playgroud)
当然你不必使用jquery,只需找到你的表单的dom元素也可以正常工作.
<%= link_to t("translate.submit"), "#", class: "make it beautiful", :onclick=>"document.getElementById('your_form_id').submit()" %>
Run Code Online (Sandbox Code Playgroud)
这样你就不会使用任何ajax,只需简单的表单提交.
在Rails 3中,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 %>
Run Code Online (Sandbox Code Playgroud)
使用配套链接:
link_to 'submit me', '#', :class => 'submit_me'
Run Code Online (Sandbox Code Playgroud)
然后,在页面正文中包含的.js文件中:
$('.submit_me').click(function() {
$('form').submit();
return false;
});
Run Code Online (Sandbox Code Playgroud)
我们的想法是,将链接或表单转换为ajax请求比使用jQuery回调更复杂,如下所示:
https://github.com/rails/jquery-ujs/wiki/ajax
如果你想真正进入交互式AJAX请求,请到这里查看关于它的两篇很棒的文章.