2012-06-13 1 views
0

가 전달되는 URL로 전달. USER_ID (2) 그러나 ID (기념일에 대한) 1.잘못된 매개 변수는 "user_annversary_path"과 잘못된 주년 경로에 연결하려고

ActiveRecord::RecordNotFound in AnniversaryController#show 

Couldn't find Anniversary with id=2 
Rails.root: /Users/nelsonkeating/Desktop/ReminDeal 

Application Trace | Framework Trace | Full Trace 
app/controllers/anniversary_controller.rb:10:in `show' 
Request 

Parameters: 

{"user_id"=>"2", 
"id"=>"2"} 

해야 정확 anniversary_controller

def show 
     @user = current_user 
     @anniversary = Anniversary.find(params[:id]) 
    end 

보기 코드가 잘못된 paramater이

에 전달되는 트리거링
<%= link_to "Anniversary", user_anniversary_path(@user) %> 

경로

resources :users do 
     resources :anniversary 
    end 

답변

0

routes.rb의 사용자 내에 기념일이 중첩되어 있습니까? 그렇다면 기념일을 사용자와 함께 전달하십시오.

<%= link_to "Anniversary", user_anniversary_path(@user, @anniversary) %> 

또한보기에서 current_user를 전달하지 않는 이유는 무엇입니까? 접근 할 수 없습니까?

<%= link_to "Anniversary", user_anniversary_path(current_user, @anniversary) %> 

자세한 내용은 http://guides.rubyonrails.org/routing.html#nested-resources을 참조하십시오. User 객체 (또는 User 개체를 나타내는 ID)와 Anniversary 객체 (또는 Anniversary 개체를 나타내는 ID) 다음 user_anniversary_path에 대한

+0

예, @ 중첩되어 있습니다 (위 라우팅 추가됨). 두 오류가 라우팅 오류를 유발합니다. 요지를 참조하십시오 https://gist.github.com/2922180 – js111

+0

아래의 Ryan의 답변을 확인하십시오. @anniversary 인스턴스 변수가있는 뷰에서 작업하고 있다고 잘못 가정했습니다. – Trent

+0

방금 ​​Ryan의 게시물에 대한 귀하의 의견을 읽었습니다. user_anniversaries_path (User.first)가 필요합니다. 또는 뷰에서 액세스 할 수있는 경우 current_user입니다. – Trent

2

, 당신은 인수를 전달해야합니다.

user_anniversary_path(1, 2) 

경우 1User 개체의 id이며, 2Anniversary 개체의 id입니다 :

user_anniversary_path(User.first, Anniversary.first) 

또는이 예를 들어, 당신은이 작업을 수행 할 수 있습니다. 이 방법으로 전체 개체를 전달하는 것이 좋습니다.

트렌트의 예를 시도 할 때 실패하는 이유는 라우팅 도우미를 호출하는 동작에 @anniversary이 없기 때문입니다. 단지 조심해야합니다.

+0

@ ryan-brigg 답변을 주셔서 감사합니다.하지만 조금 혼란스러워서 내 link_to 경로를 변경해야합니다 ... 본질적으로 내 기념일 테이블을 user_id를 기반으로 검색해야합니다 .. (has_many : anniversaries, belongs_to : user association). – js111

관련 문제