0

これは私のレーキルートからの関連する行です:

 client_note GET    /clients/:client_id/notes/:id(.:format)      notes#show

オブジェクトを渡そうとすると、次のよう<%= client_note_path([client, @notes.first]) %>>になります。

No route matches {:action=>"show", :controller=>"notes", 
:client_id=>[#<Client id: 5, ... , #<Note id: 9, ...]}

そのため、クライアント ID を試してみることにしました。だから、私は試しました:<%= client_note_path([client.id, @notes.first]) %>

それは私に与える:

No route matches {:action=>"show", :controller=>"notes", :client_id=>[5, 
#<Note id: 9,content: "He just bought a brand new bobcat, be sure to charg...", 
client_id: 5, created_at: "2012-06-11 16:18:16", 
updated_at: "2012-06-11 16:18:16">]}

そのため、クライアント ID を渡してみたいと思いました。<%= client_note_path(client.id) %>

No route matches {:action=>"show", :controller=>"notes", :client_id=>5}

まだ私が探しているものではありません。通常は次のようなURLで見つけることができる個々のメモを表示できるようにしたい:http://localhost:3000/clients/2/notes/3/

どのオブジェクトが期待されていますか?

完全なルート ファイルと Rake ルート

           users GET    /users(.:format)                             users#index
                 POST   /users(.:format)                             users#create
        new_user GET    /users/new(.:format)                         users#new
       edit_user GET    /users/:id/edit(.:format)                    users#edit
            user GET    /users/:id(.:format)                         users#show
                 PUT    /users/:id(.:format)                         users#update
                 DELETE /users/:id(.:format)                         users#destroy
        sessions POST   /sessions(.:format)                          sessions#create
     new_session GET    /sessions/new(.:format)                      sessions#new
         session DELETE /sessions/:id(.:format)                      sessions#destroy
    client_notes GET    /clients/:client_id/notes(.:format)          notes#index
                 POST   /clients/:client_id/notes(.:format)          notes#create
 new_client_note GET    /clients/:client_id/notes/new(.:format)      notes#new
edit_client_note GET    /clients/:client_id/notes/:id/edit(.:format) notes#edit
     client_note GET    /clients/:client_id/notes/:id(.:format)      notes#show
                 PUT    /clients/:client_id/notes/:id(.:format)      notes#update
                 DELETE /clients/:client_id/notes/:id(.:format)      notes#destroy
         clients GET    /clients(.:format)                           clients#index
                 POST   /clients(.:format)                           clients#create
      new_client GET    /clients/new(.:format)                       clients#new
     edit_client GET    /clients/:id/edit(.:format)                  clients#edit
          client GET    /clients/:id(.:format)                       clients#show
                 PUT    /clients/:id(.:format)                       clients#update
                 DELETE /clients/:id(.:format)                       clients#destroy
            root        /                                            clients#index
          signup        /signup(.:format)                            users#new
          signin        /signin(.:format)                            sessions#new
         signout DELETE /signout(.:format)                           sessions#destroy

と:

resources :users 
resources :sessions, only: [:new, :create, :destroy]
resources :clients do
  resources :notes
end

root to: 'clients#index'

match '/signup',  to: 'users#new'
match '/signin',  to: 'sessions#new'
match '/signout', to: 'sessions#destroy', via: :delete

追加情報:

行を次のように変更すると、次のようになり<%= client_note_path(client, @notes.first) %>ます。

No route matches {:action=>"show", :controller=>"notes", :client_id=>#<Client id: 6, 
company_name: "John and Sons Roofing", contact_name: "John Wonder", phone_number: "1-    
555-283-9999", email_address: "bob@example.com", street_address: "13 Oak Street", city:
"Oakville", state: "Iowa", zip: "53457", image_location: "http://image-
location.com/image/john.jpg", created_at: "2012-06-11 16:18:16", updated_at: "2012-06-11    
16:18:16", url: "www.johnroofing.com">, :id=>nil}

これにより、IDがnilになります。しかし、私は<%= @notes.first.blank? ? "No Notes" : @notes.first.content%>メモの内容を返すので、なぜうまくいかないのかわかりません。また、id で試してみましょう。<%= client_note_path(client.id, @notes.first.id) %>

そして今、私たちは得ます: Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id. DB を調べると、ノートの ID は 9 で、クライアントは 5 です。

4

2 に答える 2

2

あなたの問題は、2つのパラメーターを渡すだけでなく、オブジェクトを1つのパラメーターとして配列に配置していることだと思います。適切な方法は

client_note_path(client, @notes.first)

オブジェクト自体(図のように)、またはオブジェクトのIDをいずれかまたは両方に渡すことができることに注意してください。

于 2012-06-11T22:50:04.477 に答える
1

このclient_note_pathメソッドは、2つの引数を数えます。

client_note_path(client, note)

ClientオブジェクトとオブジェクトNote。または、オブジェクトのClientとを表すID 。Note

あなたが抱えている問題は、あなたが望む音符を伝えなかったか、配列を使用したためです。配列を使用すると、引数を1つだけ受け取るようになります。

于 2012-06-11T22:50:24.463 に答える