Rails 条更有意义的路线
Rails routes that make more sense
我有一个控制器,可以根据 ajax 请求创建用户关系。控制器需要知道这两个用户是谁,是什么类型的关系(亲子、配偶等)。
我目前的路线是:
put 'relationships/:id/:second_id/:type'
get 'relationships/:id/:second_id/:type'
patch 'relationships/:id/:second_id/:type'
delete 'relationships/:id/:second_id/:type'
我的方法:create, show, update, delete
.
我的问题是,我可以做一个 do
块来把这个写得更简洁吗?另外,这是最好的方法吗?
这是我目前拥有的:
resources :users do
resources :family_relationships, :only => [:create, :update, :delete, :show], path: 'relationships', as: :relationships
end
这给了我这些路线:
user_relationships POST /users/:user_id/relationships(.:format) family_relationships#create
user_relationship GET /users/:user_id/relationships/:id(.:format) family_relationships#show
PATCH /users/:user_id/relationships/:id(.:format) family_relationships#update
PUT /users/:user_id/relationships/:id(.:format) family_relationships#update
您可以在 config/routes.rb
中获取资源。它也可以嵌套 -
resources :relationships do
resources :types
end
如果您这样做 rake routes
,将导致路线可用
app_root>$ rake routes
这是我想到的(虽然我不相信没有更好的方法):
resources :users do
put 'relationships/:uid/:type', controller: :family_relationships, action: :create
get 'relationships/:uid/:type', controller: :family_relationships, action: :show
patch 'relationships/:uid/:type', controller: :family_relationships, action: :update
delete 'relationships/:uid/:type', controller: :family_relationships, action: :delete
end
给出这样的路线:
PUT /users/:user_id/relationships/:uid/:type(.:format) family_relationships#create
GET /users/:user_id/relationships/:uid/:type(.:format) family_relationships#show
PATCH /users/:user_id/relationships/:uid/:type(.:format) family_relationships#update
DELETE /users/:user_id/relationships/:uid/:type(.:format) family_relationships#delete
我有一个控制器,可以根据 ajax 请求创建用户关系。控制器需要知道这两个用户是谁,是什么类型的关系(亲子、配偶等)。
我目前的路线是:
put 'relationships/:id/:second_id/:type'
get 'relationships/:id/:second_id/:type'
patch 'relationships/:id/:second_id/:type'
delete 'relationships/:id/:second_id/:type'
我的方法:create, show, update, delete
.
我的问题是,我可以做一个 do
块来把这个写得更简洁吗?另外,这是最好的方法吗?
这是我目前拥有的:
resources :users do
resources :family_relationships, :only => [:create, :update, :delete, :show], path: 'relationships', as: :relationships
end
这给了我这些路线:
user_relationships POST /users/:user_id/relationships(.:format) family_relationships#create
user_relationship GET /users/:user_id/relationships/:id(.:format) family_relationships#show
PATCH /users/:user_id/relationships/:id(.:format) family_relationships#update
PUT /users/:user_id/relationships/:id(.:format) family_relationships#update
您可以在 config/routes.rb
中获取资源。它也可以嵌套 -
resources :relationships do
resources :types
end
如果您这样做 rake routes
,将导致路线可用
app_root>$ rake routes
这是我想到的(虽然我不相信没有更好的方法):
resources :users do
put 'relationships/:uid/:type', controller: :family_relationships, action: :create
get 'relationships/:uid/:type', controller: :family_relationships, action: :show
patch 'relationships/:uid/:type', controller: :family_relationships, action: :update
delete 'relationships/:uid/:type', controller: :family_relationships, action: :delete
end
给出这样的路线:
PUT /users/:user_id/relationships/:uid/:type(.:format) family_relationships#create
GET /users/:user_id/relationships/:uid/:type(.:format) family_relationships#show
PATCH /users/:user_id/relationships/:uid/:type(.:format) family_relationships#update
DELETE /users/:user_id/relationships/:uid/:type(.:format) family_relationships#delete