0

在我结账过程的每一步,订单都会通过PUT请求进行更新。但是,其中一个州有一个提交给第三方的表单,该表单重定向回我的站点,调用 update 方法GET(对此无法控制)。

为什么我的respond_with代码似乎被完全忽略并且出现Missing Template checkout/update错误?应该是打的#edit

CheckoutController.rb

before_filter :load_order

def update
  if @order.update_attributes(params[:order])
    @order.next
  end
  respond_with(@order, :location => checkout_state_url(@order.state))
end

路线.rb

match '/checkout/update/:state' => 'checkout#update', :as => :update_checkout
match '/checkout/:state' => 'checkout#edit', :as => :checkout_state
match '/checkout' => 'checkout#edit', :state => 'client_details', :as => :checkout
4

1 回答 1

0

respond_with根据 HTTP 动词和资源是否有错误,它看起来会做不同的事情。见这里这里

以下代码对我有用:

def update
    if @order.update_attributes(params[:order]) && @order.next
        respond_with(@order) { |format| format.html { redirect_to checkout_state_url(@order.state) } }
    else
        respond_with(@order) { |format| format.html { render :edit } }
    end
end
于 2012-05-03T16:17:16.740 回答