在结帐流程的每一步,都会通过PUT
请求更新订单。但是,其中一个州有一个表单提交给第三方,该第三方重定向回我的网站,使用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
的routes.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
答案 0 :(得分:0)
看起来respond_with
根据HTTP谓词和资源是否有错误做了不同的事情。请参阅here和here。
以下代码对我有用:
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