gpt4 book ai didi

mysql - Rails 如何渲染表单而不是在提交时重定向?

转载 作者:行者123 更新时间:2023-11-29 10:53:40 25 4
gpt4 key购买 nike

我有一个表单,结果仅显示渲染而不是重定向。

因此表单不得重定向。有人知道这是否可以用 Rails 实现吗?

形式为:

  Pac: <%= @pac %> 
Sedex: <%= @sedex %>
<%= form_tag calculate_ship_path, :method => "get" do %>
<%= text_field_tag :post_code%>
                 <% end %> 

订单 Controller 和操作是:

  def calculate_ship
frete = Correios::Frete::Calculador.new cep_origem: "#{@order.seller.post_code}",
:peso => "#{@order.product.weight}",
:comprimento => "#{@order.product.weight}",
:largura => "#{@order.product.weight}",
:altura => "#{@order.product.weight}",
cep_destino: params[:post_code]
servicos = frete.calcular :sedex, :pac
@pac = servicos[:pac].valor
@sedex = servicos[:sedex].valor
render '/path/to/rails/app//orders/:id/checkout'
end

路线是:

get  '/path/to/rails/app//orders/:id/checkout', to: 'orders#checkout', as: :calculate_ship

最佳答案

Rails 有一个非常方便的方法来处理这个问题:远程表单。这里需要注意的是,如果您不使用 Unobtrusive JS (UJS),那么这将不起作用,您必须以困难的方式将其连接起来。

假设您使用的是 Rails 5,在表单标记表示法中,它看起来像这样:

<%= form_tag(calculate_ship_path, remote: true, method: "GET") do %>
<%# form stuff %>
<% end %>

您应该能够对大多数 Rails 版本执行此操作,但它可能看起来有点不同。实际上,它的作用是通过 AJAX 提交您的表单。然后,您将能够将 JS 事件监听器绑定(bind)到 ajax:successajax:error 并处理从 calculate_ship 获得的响应。

需要注意的一点是,当您进行表单提交时,该方法默认为 POST,并且可能应该是 PUT补丁

以下是 Rails 的相关文档:http://guides.rubyonrails.org/working_with_javascript_in_rails.html#form-tag

关于mysql - Rails 如何渲染表单而不是在提交时重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43333733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com