Ruby on rails 如何决定通过post或get on Rails运行哪个操作

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

我有一个名为“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中定义的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