2016-11-18 18 views
1

私は、次のルートが宣言しているが: Railsのネストされたリソース - 設定のparam:問題

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 

が、私は

を期待していた

/アカウント/::これは私のルートを与えるACCOUNT_ID /説明書/:instruction_id等...?

私が間違っていることをアドバイスできますか?

+0

あなたはこれで問題がある –

答えて

2

あなたは次の方法でそれを行うことができます。これは行います

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 

UPDATE

いますが、すべて同じのparamsを必要とする場合は、あなたが行うことができます。

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 

a NDこれは戻ります:

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 
+0

入れ子構造でのparamsを渡しているので、あなたはこれを取得している:/ '/アカウント:ACCOUNT_ID /説明書/:id'私はこの/'ことでしょうaccounts /:account_id/instructions /:instruction_id' – Haroon

+0

が更新されました。 –

関連する問題