これは私のレーキルートからの関連する行です:
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 です。