Rails 嵌套资源 - 设置参数:问题
Rails nested resource - setting param: issue
我声明了以下路线:
resources :accounts, param: :account_id do
resources :instructions, param: :instruction_id do
resources :messages, param: :message_id
end
end
所以账户、说明、消息是我拥有的3个模型。这给了我路线:
account_instruction_messages GET /accounts/:account_account_id/instructions/:instruction_instruction_id/messages(.:format) messages#index
POST /accounts/:account_account_id/instructions/:instruction_instruction_id/messages(.:format) messages#create
new_account_instruction_message GET /accounts/:account_account_id/instructions/:instruction_instruction_id/messages/new(.:format) messages#new
edit_account_instruction_message GET /accounts/:account_account_id/instructions/:instruction_instruction_id/messages/:message_id/edit(.:format) messages#edit
account_instruction_message GET /accounts/:account_account_id/instructions/:instruction_instruction_id/messages/:message_id(.:format) messages#show
PATCH /accounts/:account_account_id/instructions/:instruction_instruction_id/messages/:message_id(.:format) messages#update
PUT /accounts/:account_account_id/instructions/:instruction_instruction_id/messages/:message_id(.:format) messages#update
DELETE /accounts/:account_account_id/instructions/:instruction_instruction_id/messages/:message_id(.:format) messages#destroy
account_instructions GET /accounts/:account_account_id/instructions(.:format) instructions#index
POST /accounts/:account_account_id/instructions(.:format) instructions#create
new_account_instruction GET /accounts/:account_account_id/instructions/new(.:format) instructions#new
edit_account_instruction GET /accounts/:account_account_id/instructions/:instruction_id/edit(.:format) instructions#edit
account_instruction GET /accounts/:account_account_id/instructions/:instruction_id(.:format) instructions#show
PATCH /accounts/:account_account_id/instructions/:instruction_id(.:format) instructions#update
PUT /accounts/:account_account_id/instructions/:instruction_id(.:format) instructions#update
DELETE /accounts/:account_account_id/instructions/:instruction_id(.:format) instructions#destroy
我觉得这不对,我期待
/accounts/:account_id/instructions/:instruction_id 等等...?
有人可以告诉我做错了什么吗?
您可以通过以下方式进行:
resources :accounts do
resources :instructions do
resources :messages, param: :message_id
end
end
这将使你接下来的路线:
account_instruction_messages GET /accounts/:account_id/instructions/:instruction_id/messages(.:format) messages#index
POST /accounts/:account_id/instructions/:instruction_id/messages(.:format) messages#create
new_account_instruction_message GET /accounts/:account_id/instructions/:instruction_id/messages/new(.:format) messages#new
edit_account_instruction_message GET /accounts/:account_id/instructions/:instruction_id/messages/:message_id/edit(.:format) messages#edit
account_instruction_message GET /accounts/:account_id/instructions/:instruction_id/messages/:message_id(.:format) messages#show
PATCH /accounts/:account_id/instructions/:instruction_id/messages/:message_id(.:format) messages#update
PUT /accounts/:account_id/instructions/:instruction_id/messages/:message_id(.:format) messages#update
DELETE /accounts/:account_id/instructions/:instruction_id/messages/:message_id(.:format) messages#destroy
account_instructions GET /accounts/:account_id/instructions(.:format) instructions#index
POST /accounts/:account_id/instructions(.:format) instructions#create
new_account_instruction GET /accounts/:account_id/instructions/new(.:format) instructions#new
edit_account_instruction GET /accounts/:account_id/instructions/:id/edit(.:format) instructions#edit
account_instruction GET /accounts/:account_id/instructions/:id(.:format) instructions#show
PATCH /accounts/:account_id/instructions/:id(.:format) instructions#update
PUT /accounts/:account_id/instructions/:id(.:format) instructions#update
DELETE /accounts/:account_id/instructions/:id(.:format) instructions#destroy
accounts GET /accounts(.:format) accounts#index
POST /accounts(.:format) accounts#create
new_account GET /accounts/new(.:format) accounts#new
edit_account GET /accounts/:id/edit(.:format) accounts#edit
account GET /accounts/:id(.:format) accounts#show
PATCH /accounts/:id(.:format) accounts#update
PUT /accounts/:id(.:format) accounts#update
DELETE /accounts/:id(.:format) accounts#destroy
更新
但是如果你需要所有相同的参数,你可以这样做:
resources :accounts, only: [] do
resources :instructions, only: [] do
resources :messages, param: :message_id
end
end
resources :accounts, param: :account_id
resources :instructions, param: :instruction_id
这将 return:
account_instruction_messages GET /accounts/:account_id/instructions/:instruction_id/messages(.:format) messages#index
POST /accounts/:account_id/instructions/:instruction_id/messages(.:format) messages#create
new_account_instruction_message GET /accounts/:account_id/instructions/:instruction_id/messages/new(.:format) messages#new
edit_account_instruction_message GET /accounts/:account_id/instructions/:instruction_id/messages/:message_id/edit(.:format) messages#edit
account_instruction_message GET /accounts/:account_id/instructions/:instruction_id/messages/:message_id(.:format) messages#show
PATCH /accounts/:account_id/instructions/:instruction_id/messages/:message_id(.:format) messages#update
PUT /accounts/:account_id/instructions/:instruction_id/messages/:message_id(.:format) messages#update
DELETE /accounts/:account_id/instructions/:instruction_id/messages/:message_id(.:format) messages#destroy
accounts GET /accounts(.:format) accounts#index
POST /accounts(.:format) accounts#create
new_account GET /accounts/new(.:format) accounts#new
edit_account GET /accounts/:accounts_id/edit(.:format) accounts#edit
account GET /accounts/:accounts_id(.:format) accounts#show
PATCH /accounts/:accounts_id(.:format) accounts#update
PUT /accounts/:accounts_id(.:format) accounts#update
DELETE /accounts/:accounts_id(.:format) accounts#destroy
....... and so on
我声明了以下路线:
resources :accounts, param: :account_id do
resources :instructions, param: :instruction_id do
resources :messages, param: :message_id
end
end
所以账户、说明、消息是我拥有的3个模型。这给了我路线:
account_instruction_messages GET /accounts/:account_account_id/instructions/:instruction_instruction_id/messages(.:format) messages#index
POST /accounts/:account_account_id/instructions/:instruction_instruction_id/messages(.:format) messages#create
new_account_instruction_message GET /accounts/:account_account_id/instructions/:instruction_instruction_id/messages/new(.:format) messages#new
edit_account_instruction_message GET /accounts/:account_account_id/instructions/:instruction_instruction_id/messages/:message_id/edit(.:format) messages#edit
account_instruction_message GET /accounts/:account_account_id/instructions/:instruction_instruction_id/messages/:message_id(.:format) messages#show
PATCH /accounts/:account_account_id/instructions/:instruction_instruction_id/messages/:message_id(.:format) messages#update
PUT /accounts/:account_account_id/instructions/:instruction_instruction_id/messages/:message_id(.:format) messages#update
DELETE /accounts/:account_account_id/instructions/:instruction_instruction_id/messages/:message_id(.:format) messages#destroy
account_instructions GET /accounts/:account_account_id/instructions(.:format) instructions#index
POST /accounts/:account_account_id/instructions(.:format) instructions#create
new_account_instruction GET /accounts/:account_account_id/instructions/new(.:format) instructions#new
edit_account_instruction GET /accounts/:account_account_id/instructions/:instruction_id/edit(.:format) instructions#edit
account_instruction GET /accounts/:account_account_id/instructions/:instruction_id(.:format) instructions#show
PATCH /accounts/:account_account_id/instructions/:instruction_id(.:format) instructions#update
PUT /accounts/:account_account_id/instructions/:instruction_id(.:format) instructions#update
DELETE /accounts/:account_account_id/instructions/:instruction_id(.:format) instructions#destroy
我觉得这不对,我期待
/accounts/:account_id/instructions/:instruction_id 等等...?
有人可以告诉我做错了什么吗?
您可以通过以下方式进行:
resources :accounts do
resources :instructions do
resources :messages, param: :message_id
end
end
这将使你接下来的路线:
account_instruction_messages GET /accounts/:account_id/instructions/:instruction_id/messages(.:format) messages#index
POST /accounts/:account_id/instructions/:instruction_id/messages(.:format) messages#create
new_account_instruction_message GET /accounts/:account_id/instructions/:instruction_id/messages/new(.:format) messages#new
edit_account_instruction_message GET /accounts/:account_id/instructions/:instruction_id/messages/:message_id/edit(.:format) messages#edit
account_instruction_message GET /accounts/:account_id/instructions/:instruction_id/messages/:message_id(.:format) messages#show
PATCH /accounts/:account_id/instructions/:instruction_id/messages/:message_id(.:format) messages#update
PUT /accounts/:account_id/instructions/:instruction_id/messages/:message_id(.:format) messages#update
DELETE /accounts/:account_id/instructions/:instruction_id/messages/:message_id(.:format) messages#destroy
account_instructions GET /accounts/:account_id/instructions(.:format) instructions#index
POST /accounts/:account_id/instructions(.:format) instructions#create
new_account_instruction GET /accounts/:account_id/instructions/new(.:format) instructions#new
edit_account_instruction GET /accounts/:account_id/instructions/:id/edit(.:format) instructions#edit
account_instruction GET /accounts/:account_id/instructions/:id(.:format) instructions#show
PATCH /accounts/:account_id/instructions/:id(.:format) instructions#update
PUT /accounts/:account_id/instructions/:id(.:format) instructions#update
DELETE /accounts/:account_id/instructions/:id(.:format) instructions#destroy
accounts GET /accounts(.:format) accounts#index
POST /accounts(.:format) accounts#create
new_account GET /accounts/new(.:format) accounts#new
edit_account GET /accounts/:id/edit(.:format) accounts#edit
account GET /accounts/:id(.:format) accounts#show
PATCH /accounts/:id(.:format) accounts#update
PUT /accounts/:id(.:format) accounts#update
DELETE /accounts/:id(.:format) accounts#destroy
更新
但是如果你需要所有相同的参数,你可以这样做:
resources :accounts, only: [] do
resources :instructions, only: [] do
resources :messages, param: :message_id
end
end
resources :accounts, param: :account_id
resources :instructions, param: :instruction_id
这将 return:
account_instruction_messages GET /accounts/:account_id/instructions/:instruction_id/messages(.:format) messages#index
POST /accounts/:account_id/instructions/:instruction_id/messages(.:format) messages#create
new_account_instruction_message GET /accounts/:account_id/instructions/:instruction_id/messages/new(.:format) messages#new
edit_account_instruction_message GET /accounts/:account_id/instructions/:instruction_id/messages/:message_id/edit(.:format) messages#edit
account_instruction_message GET /accounts/:account_id/instructions/:instruction_id/messages/:message_id(.:format) messages#show
PATCH /accounts/:account_id/instructions/:instruction_id/messages/:message_id(.:format) messages#update
PUT /accounts/:account_id/instructions/:instruction_id/messages/:message_id(.:format) messages#update
DELETE /accounts/:account_id/instructions/:instruction_id/messages/:message_id(.:format) messages#destroy
accounts GET /accounts(.:format) accounts#index
POST /accounts(.:format) accounts#create
new_account GET /accounts/new(.:format) accounts#new
edit_account GET /accounts/:accounts_id/edit(.:format) accounts#edit
account GET /accounts/:accounts_id(.:format) accounts#show
PATCH /accounts/:accounts_id(.:format) accounts#update
PUT /accounts/:accounts_id(.:format) accounts#update
DELETE /accounts/:accounts_id(.:format) accounts#destroy
....... and so on