2012-04-13 2 views
2

은 어쩌면 내가 멍청하지만 레일은 URL의과 같이 생성이 멋진 구문을 제공합니다합격 : 새로운 레일에 url_for

url_for([:edit, user, comment]) # => /users/1/comment/1/edit 

: 나 이런 식으로 뭔가를 만들 수 있습니다 :edit 전달

url_for([user, comment]) # => /users/1/comment/1 

을 다음과 같은 방법이 있습니까?

url_for([:new, user, comments]) # => NoMethodError: undefined method `new_user_comments_url' 

UPDATE : 추가 자세한 내용은.

내 routes.rb : 여기

resources :users do 
    resources :comments 
end 

resources :posts do 
    resources :comments 
end 

내 문제, 난 레일을 자동으로 생성 된 URL 헬퍼 (user_comments_url)를 사용할 수 없다는 나는 사용자의 의견과 이후 모두에 대해 의견을 공유하고 있습니다 때문에 코멘트.

은 두 가지 해결 방법이 있습니다 (그러나 아무도는 "레일"웨이 같은 느낌 없음) 내 문제에 대한 :

  1. 보기에 로직을 추가, 예를 들어, 어떤 경우에는 조건.

  2. new_parent_comment(user_or_blog)과 같은 내 자신의 URL 도우미 정의.

답변

4

가 좋아, 해결책을 발견

url_for([:new, user, comment]) 

하지만,이는 것입니다 있는지 확실하지 않습니다 (가정 당신의 comment 변수가 정의되어 있습니다.) : 나는 마지막 줄이 없습니다 commentscomment를 읽을해야한다고 생각 하나 :

url_for([:new, user, :comment]) # => '/users/1/comments/new' 

url_for([:new, post, :comment]) # => '/posts/1/comments/new' 
2

Rails Docs에 따르면 url_for는 RESTful 경로를 생성하기 위해 전달 된 개체의 클래스 이름을 사용합니다. 당신은 그런 admin_workshop_path 당신이 (url_for 그 경로를 추측하는 것이 불가능) 명시 적으로 호출해야합니다, 중첩 된 경로가있는 경우

: 그것은 또한 중첩 된 경로로 올바르게 이러한 가정을 할 수 없다는.

new_user_comment_path()과 같은 이름의 경로를 사용하는 것이 좋습니다. 또한 귀하의 모든 경로에 대한 적절한 이름을 인쇄 할 rake routes를 실행할 수 있습니다

resources :users do 
    resources :comments do 
    end 
end 

: 난 당신처럼 routes.rb 뭔가를 설정 한 가정입니다. 도움이 되었으면 좋겠습니다. /Salernost

+0

추가 정보. –

0

이 단순히 오타가 될 수 있습니까?

+0

불행히도 오타가 없으므로''' '/ users/1/comments/new/1'''' (주석이 이미 저장되어있는 경우) 또는 이미 내 질문에 언급 된 오류가 발생합니다. –