Ruby on rails 如何决定通过post或get on Rails运行哪个操作
我有一个名为“return.html.erb”的表单页面 让用户填写表单,然后发送表单 按我的路线Ruby on rails 如何决定通过post或get on Rails运行哪个操作,ruby-on-rails,Ruby On Rails,我有一个名为“return.html.erb”的表单页面 让用户填写表单,然后发送表单 按我的路线 get 'refund' => 'orders#refund' post 'refund' => 'orders#refund' 在我的控制器中 def refund apply_refund_to_gdocs respond_to do |format| format.html{} end end 在helper中定义的a
get 'refund' => 'orders#refund'
post 'refund' => 'orders#refund'
在我的控制器中
def refund
apply_refund_to_gdocs
respond_to do |format|
format.html{}
end
end
在helper中定义的apply_Return_to_gdocs,
但现在当我加载表单页面时,它将调用apply_Return_to_gdocs。
但我只想在用户发送表单时向gdocs申请退款。
有什么想法吗?好吧,最好的办法是把这个方法一分为二,因为它适用于两种不同的东西。我同意:
get 'refund' => 'orders#refund', as: :refund
post 'refund' => 'orders#do_refund', as: :do_refund
然后在控制器中,你有
def refund
# your original 'GET' stuff
render 'refund'
end
def do_refund
# your post stuff
# render 'refund' or redirect
end
请注意,如果在do\u return
中渲染视图,而不是重定向到return\u路径
,则浏览器窗口中的刷新将再次触发post操作。因此,最好仅在存在希望用户更正的表单错误时渲染,否则重定向
但是,如果您想使用单个方法,可以在控制器中检查请求。比如:
def refund
if request.post?
#do post stuff
else
# do get stuff
end
end