Mysql Rails如何在提交时呈现表单而不是重定向?
我有一个表单,结果只显示if render而不是redirect 因此,表单不能被重定向。有人知道rails是否可以做到这一点吗 表格为:Mysql Rails如何在提交时呈现表单而不是重定向?,mysql,ruby-on-rails,forms,ruby-on-rails-3,Mysql,Ruby On Rails,Forms,Ruby On Rails 3,我有一个表单,结果只显示if render而不是redirect 因此,表单不能被重定向。有人知道rails是否可以做到这一点吗 表格为: Pac: <%= @pac %> Sedex: <%= @sedex %> <%= form_tag calculate_ship_path, :method => "get" do %>
Pac: <%= @pac %>
Sedex: <%= @sedex %>
<%= form_tag calculate_ship_path, :method => "get" do %>
<%= text_field_tag :post_code%>
路线为:
get '/path/to/rails/app//orders/:id/checkout', to: 'orders#checkout', as: :calculate_ship
Rails有一个非常方便的方法来处理这个问题:远程表单。这里需要注意的是,如果您没有使用不引人注目的JS(UJS),那么这将不起作用,您必须以艰难的方式将其连接起来 在表单标记表示法中,假设您使用的是Rails 5,它看起来像这样:
<%= form_tag(calculate_ship_path, remote: true, method: "GET") do %>
<%# form stuff %>
<% end %>
对于大多数Rails版本,您应该能够做到这一点,但它看起来可能有点不同。实际上,这是通过AJAX提交表单。然后,您将能够将JS事件侦听器绑定到ajax:success
或ajax:error
,并处理从calculate\u ship
获得的响应
需要注意的一点是,当您进行表单提交时,方法默认为POST
,可能应该是PUT
,或者补丁
以下是rails的相关文档:只是为了澄清一下,您希望表单提交并在不重新加载或转到新页面的情况下将返回的数据显示在同一页面上?Hello@octopushugs,是的。它们应该类似
get '/path/to/rails/app//orders/:id/checkout', to: 'orders#checkout', as: :calculate_ship
<%= form_tag(calculate_ship_path, remote: true, method: "GET") do %>
<%# form stuff %>
<% end %>