【问题标题】:How to change default path/url in routes in Rails 4如何在 Rails 4 中更改路由中的默认路径/url
【发布时间】:2016-07-23 11:18:50
【问题描述】:

我正在开发一个简单的预订应用程序。这是我的路线

resources :users do
  get 'reservations', on: :member
end

resources :listings do
  resources :reservations
end

当我尝试进行预订时,操作 reservations#new 会将我带到 reservations_path 。当然,我收到错误,因为这条路径不存在。我想采取行动new 将我带到listing_reservations_path。我希望它会自动完成,因为resources :reservations 在嵌套资源中。我阅读了路线并尝试了很多东西,但找不到任何可行的方法。有可能吗?

【问题讨论】:

  • 首先检查路由..通过 rake 路由..
  • 行动reservations#new 带你到reservations_path 是什么意思?您的意思是说表单助手在与控制器和操作一起使用时作为reservationnew 将路径设置为reservations_path

标签: ruby-on-rails path nested-resources


【解决方案1】:

您似乎对nature of routes 不清楚。动作reservations#new 独立于任何路由存在。路由只是将 URL 路径映射到控制器和操作的一种方式。如果您尝试执行以下操作:

redirect_to controller: :resources, action: :new

您会遇到麻烦,因为您的所有路线都需要一些上下文。相反,您需要在上下文中提供您正在使用的任何 URL 帮助器:

redirect_to listing_reservations_path(@listing)

link_to "New Reservation", new_listing_reservation_path(@listing)    

link_to "Reservation", [@listing, @reservation]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多