Rails重定向显示何时重定向到同一类中的其他操作

时间:2016-05-01 00:59:08

标签: ruby-on-rails routes

我的任务是向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]

我需要一些专家意见。请帮忙。

1 个答案:

答案 0 :(得分:2)

thank_you路线移到resources :checkout上方。

来自Rails guides

  

Rails路由按照指定的顺序进行匹配,所以如果你   有一个资源:上面的照片得到'照片/民意调查'的节目动作   资源行的路由将在获取行之前匹配。至   解决这个问题,将get行移到资源行上方,这样就可以了   首先匹配。