【问题标题】:Nested resource from own controllers method - or create completely new controller?来自自己的控制器方法的嵌套资源 - 或创建全新的控制器?
【发布时间】:2019-06-01 02:20:08
【问题描述】:

问题:当用户(登录时)创建订单时,它们会被发送到 OrderControllers 显示页面,该页面只有在买卖双方都登录后才能访问。从这里他们可以编辑/更新他们的订单等。

我们还有guest_user,一个没有登录的人,我需要在浏览器中确认订单(我正在使用 Devise gem)

我创建了一个方法:

def order_confirmation

在 OrdersController 中。

不过,我怎样才能将它嵌套在订单中,以便页面知道要显示哪个订单。

这是否可以在它自己的控制器下嵌套方法,或者我应该只创建一个小控制器只用于订单确认?

例如:example.com/orders/1/order-confirmation

除了嵌套和创建控制器之外,也许还有更好的方法来解决这个问题?

我试过了

  resources :orders do
    collection do
      get 'order_confirmation'
    end
  end

  def order_confirmation
    @order = Order.all.find(params[:id])
  end

但它不会像我想要的那样工作。

rake 路线给了我

order_confirmation_orders GET    /orders/order_confirmation(.:format)

我怎样才能得到?

order_order_confirmation_orders GET    /orders/id/order_confirmation(.:format)

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    我能够从这篇 SO 帖子的帮助中弄清楚这一点:

    Rails: Custom nested controller actions

    通过使用:

    resources :orders do
      get 'order_confirmation', :on => :member
    end
    

    这会创建:

     order_confirmation_order GET    /orders/:id/order_confirmation(.:format)                                                 orders#order_confirmation
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-20
      相关资源
      最近更新 更多