【发布时间】:2011-10-19 15:05:21
【问题描述】:
如何在表单中创建提交操作,而不是通过按钮(使用 submit_tag)而不是通过图像(image_submit_tag)?
我希望提交是像链接一样的可点击文本
谢谢
【问题讨论】:
标签: ruby-on-rails-3 form-submit
如何在表单中创建提交操作,而不是通过按钮(使用 submit_tag)而不是通过图像(image_submit_tag)?
我希望提交是像链接一样的可点击文本
谢谢
【问题讨论】:
标签: ruby-on-rails-3 form-submit
您需要使用 javascript 来执行此操作,因为链接是 GET 请求,而不是发布请求。所以假设你有以下代码:
<%= form_for @post, :html => { :id => 'form' } do |f| %>
<div class="field">
<%= f.label :title %>
<%= f.text_field :title %>
</div>
<div class="field">
<%= f.label :body %>
<%= f.text_area :body %>
</div>
<div class="actions">
<a id="submit">Submit</a>
</div>
<% end %>
然后您需要将以下内容添加到您的 javascript 文件之一。如果您使用的是
$(function() {
$('#submit').click(function() {
$('#form').submit();
});
});
也就是说,您可以将方法选项传递给 link_to 方法调用,以使用 POST。但是,仅在没有 javascript 的情况下执行此操作将不会提交任何表单数据。因此,您要么必须执行上述操作,要么使用 javascript 将数据添加到 url,就像在查询字符串中一样。
【讨论】:
<%= javascript_include_tag :defaults %>,或类似的内容。默认符号包括各种 js 库,以及 application.js。如果您不在 Rails 3.1 中,您可能需要将 jQuery 添加到您的应用程序中才能使上述代码正常工作。
这是我做到的一种方式:
<a><%= submit_tag "Submit", class: "fake-button" %></a>
然后,更改样式:
.fake-button {
padding: 0;
border: none;
display: inline;
}
所以它在技术上仍然是一个按钮,但看起来非常像一个链接。虽然有点 hacky :)
【讨论】: