我的任务是向place_order
控制器内的Checkout
操作提交表单
这就是我在我的视图文件中编写表单的方式,即
<%= form_for (@order), url: {action: "place_order"} do |f| %>
它确实到达了这个方法,并且当我保存对象时,我想redirect
到同一个类中的其他方法。此方法名称为thank_you
。我的代码在place_order
方法
if @order.save
redirect_to :action => 'thank_you'
else
...
end
但它重定向到显示此类的方法。如果我将重定向更改为其他类,则会重定向,但在同一controller
的其他操作中,它会重定向到show
。
以下是我定义路线的方式
resources :checkout
resources :photos
devise_for :users
resources :carts
post 'checkout/place_order'
match 'checkout/thank_you', to: 'checkout#thank_you', via: [:get]
我需要一些专家意见。请帮忙。
答案 0 :(得分:2)
将thank_you
路线移到resources :checkout
上方。
来自Rails guides:
Rails路由按照指定的顺序进行匹配,所以如果你 有一个资源:上面的照片得到'照片/民意调查'的节目动作 资源行的路由将在获取行之前匹配。至 解决这个问题,将get行移到资源行上方,这样就可以了 首先匹配。