【问题标题】:Rails redirection to show when redirected to other action in same classRails 重定向以在重定向到同一类中的其他操作时显示
【发布时间】:2016-05-01 00:59:07
【问题描述】:

我的任务是向Checkout 控制器内的place_order 操作提交一个表单。
这就是我在视图文件中编写表单的方式,即

<%= 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]

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

【问题讨论】:

  • 你确定吗?请验证一次并确定。我怀疑是因为如果save 返回true 那么它必须重定向到thank_you 操作。
  • 是的,我很确定。在在这里发布问题之前我已经检查了很多次,下面的答案已经解决了。感谢您查看我的问题。

标签: ruby-on-rails routes


【解决方案1】:

将您的thank_you 路由移到resources :checkout 上方。

来自Rails guides

Rails 路由按照它们指定的顺序匹配,所以如果你 有资源 :photos above a get 'photos/poll' the show action's 资源行的路线将在获取行之前匹配。至 解决这个问题,将 get 行移到资源行上方,使其成为 首先匹配。

【讨论】:

  • 很好的答案 Nitish;很好的观察。跟上
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-06
  • 2014-10-17
  • 2012-03-31
  • 1970-01-01
相关资源
最近更新 更多