Ruby on rails 路由关注点为资源定义不同的参数
最近,我从这次讨论中了解到了路线中的rails问题 . 现在,在我的应用程序中,我有如下路线:Ruby on rails 路由关注点为资源定义不同的参数,ruby-on-rails,ruby-on-rails-4,routes,Ruby On Rails,Ruby On Rails 4,Routes,最近,我从这次讨论中了解到了路线中的rails问题 . 现在,在我的应用程序中,我有如下路线: namespace :admin do resources :photos resources :businesses resources :projects resources :quotes end resources :photos, param: 'slug' resources :businesses, param: 'slug' do resources :projec
namespace :admin do
resources :photos
resources :businesses
resources :projects
resources :quotes
end
resources :photos, param: 'slug'
resources :businesses, param: 'slug' do
resources :projects, param: 'slug' #As I need both the url one inside business and one outside
end
resources :projects, param: 'slug'
resources :quotes, param: 'slug'
concern :shared_resources do
resources :photos
resources :businesses
resources :projects
resources :quotes
end
namespace :admin do
concerns :shared_resources
end
concerns :shared_resources
concerns :shared_resources, param: 'slug'
还有更多的资源在重复,因为我需要它们。我知道如何实施这些措施。出于担忧,我可以这样做:
namespace :admin do
resources :photos
resources :businesses
resources :projects
resources :quotes
end
resources :photos, param: 'slug'
resources :businesses, param: 'slug' do
resources :projects, param: 'slug' #As I need both the url one inside business and one outside
end
resources :projects, param: 'slug'
resources :quotes, param: 'slug'
concern :shared_resources do
resources :photos
resources :businesses
resources :projects
resources :quotes
end
namespace :admin do
concerns :shared_resources
end
concerns :shared_resources
concerns :shared_resources, param: 'slug'
但是,如何在关注点中每次都给出不同的参数?我试着这样做:
namespace :admin do
resources :photos
resources :businesses
resources :projects
resources :quotes
end
resources :photos, param: 'slug'
resources :businesses, param: 'slug' do
resources :projects, param: 'slug' #As I need both the url one inside business and one outside
end
resources :projects, param: 'slug'
resources :quotes, param: 'slug'
concern :shared_resources do
resources :photos
resources :businesses
resources :projects
resources :quotes
end
namespace :admin do
concerns :shared_resources
end
concerns :shared_resources
concerns :shared_resources, param: 'slug'
但这并没有改变路线。如果我加上:
resources :photos, param: 'slug'
然后它将添加到两个路由slug而不是id。但是在管理端我需要id,在前端我需要slug。那么,有没有什么方法可以在关注点中传递此信息,从而使代码干涸。是的,我记得看到过一些关于此的内容。它不在Rails指南中,但这让我有点吃惊。您可以使用block:(引自上述答案)
在Rails 4中,您可以将选项传递给关注点。因此,如果您这样做:
然后当你搜索路线时,你会看到你得到一条像
感谢您的回复,但不幸的是,这没有工作,我没有发现任何变化。你试过这个吗?这意味着如果这对你有效。嗯,我不确定这一点,但在我链接的问题中,他们使用的参数看起来像${concern\u name}\u something
。如果这个语法行得通,你能试试吗?老实说,我自己没有试过,但考虑到答案的正确性,我认为它会起作用。。。