所以在我的rails应用程序中,我有两个属于用户的资源(租赁和预订)。这是我的routes.rb中的代码,用于设置嵌套路由。
map.resources :users, :has_many => :reservations, :shallow => true
map.resources :users, :has_many => :rentals, :shallow => true
map.resources :rentals, :only => [:index]
map.resources :reservations, :only => [:index]
是否有更好的方法来做到这一点。我做了一些谷歌搜索,但我找不到一个明确的答案。
提前致谢。
射线
答案 0 :(得分:6)
您的方法会复制用户的路由,您可以通过运行rake routes
来查看。您可以通过将块传递给map.resources
:
map.resources :users, :shallow => true do |user|
user.resources :reservations
user.resources :rentals
end
创建的嵌套路由将假定您始终希望以嵌套方式访问这些资源。
如果您确实需要所有已定义的路线(包括非嵌套租赁和预订索引),则需要添加:
map.resources :rentals, :only => [:index]
map.resources :reservations, :only => [:index]
我不知道DRYer的做法。
答案 1 :(得分:1)
您可以使用块
定义嵌套路径map.resources :users, :shallow => true do |user|
user.resources :reservations, :only => [:index]
user.resources :rentals, :only => [:index]
end
我觉得这种方式更加清晰,以后可以更容易地在其中一个嵌套资源上使用其他选项进行调整。
不同的选项和详细信息位于ActionController Resources API page
答案 2 :(得分:1)
将两个资源嵌在用户下面:
map.resources :users, :shallow => true do |users|
users.resources :reservations, :only => :index
users.resources :rentals, :only => :index
end
编辑:抱歉,忘了:浅选项。