Ruby on rails 如何从操作中发布到表单
我有一个指向某个操作的链接,因此如果有人单击:Ruby on rails 如何从操作中发布到表单,ruby-on-rails,Ruby On Rails,我有一个指向某个操作的链接,因此如果有人单击: localhost/cart/checkout?pid=123 它转到CartController签出操作,然后显示一个表单 但是在某些情况下(取决于我何时加载id为123的产品),我可能不需要显示表单,我可以只加载数据,然后发布到表单的操作 如何以编程方式将数据发布到表单要发布的位置 class CartController < ApplicationController def checkout pid = params[:
localhost/cart/checkout?pid=123
它转到CartController签出操作,然后显示一个表单
但是在某些情况下(取决于我何时加载id为123的产品),我可能不需要显示表单,我可以只加载数据,然后发布到表单的操作
如何以编程方式将数据发布到表单要发布的位置
class CartController < ApplicationController
def checkout
pid = params[:pid]
product = Product.find(pid)
if product....
# no need to display view, just post to handleCheckout
end
end
# checkout form posts to this action
def handleCheckout
end
end
class-CartController
我以前没有做过类似的事情,但我有一些想法,所以请注意,没有一个是经过测试的
如果您的handleCheckout
操作打算用作Get
请求,则可以使用参数重定向到此操作。比如:
class CartController < ApplicationController
def checkout
pid = params[:pid]
product = Product.find(pid)
if product....
redirect_to action: "handleCheckout", params: params
# Not sure whether you will get it as 'params' or params[:params] in handleCheckout action
end
end
# checkout form posts to this action
def handleCheckout
end
end
正如我提到的,我没有尝试过上面的任何代码。可能有错误。我希望它能有所帮助。我不是ruby开发人员,所以如果我弄错了,请原谅,但您不能发送这样的请求:它看起来像是使用
Net::HTTP
将原始数据直接发布到URL。页面上的第二个解决方案似乎将响应返回为body
——这两个解决方案都没有页面输出(只有服务器到服务器的调用),您可以查看一下。这应该可以解决你的问题。@bananaappletw这怎么解决呢?@BlankmanGET/cart/:id=>“show data”
GET/cart/new=>“show form”def checkout
pid = params[:pid]
product = Product.find(pid)
if product....
handleCheckout
# params since is a global hash and above method has access to it
end
end
# checkout form posts to this action
def handleCheckout
# your other code
redirect_to 'some_action' and return
# in above line you have to return with a render or redirect
# Otherwise it will render 'checkout' template with render and redirect or
# it will throw double render error if you have a simple render or redirect without explicit return
end