경로 도우미는 슬래시 대신 점으로 경로를 생성합니다.


89

내 route.rb에는 다음이 있습니다.

resources :message_threads

내가 전화 할 때 :

message_threads_path(1)

나는 얻다:

/message_threads.1

왜 이런거야? 내 다른 리소스는 잘 작동합니다. 나는 이것을 올바르게 복수화하지 않습니까?

답변:


142

예, 이것은 복수화 오류입니다.

ID 1을 전달함으로써 단일 레코드를 표시하고 싶다고 가정합니다.

따라서 단수 'message_thread'를 사용해야합니다.

message_thread_path(1)

결과는 다음과 같습니다.

http://localhost:3000/message_threads/1

3
헤. 그것은 우리 모두에게 일어난다. 자주. 이 오류가 마지막으로 표시되는 것은 아닐 것입니다!
Scott

내가 만든 명명 된 경로에서 이와 동일한 오류가 발생하며 복수화하지 않습니다. 거기에 어떤 해결책이 있을까요?
kakubei

1
@kakubei, 경로 파일을 확인하십시오. 당신은 resources :my_model또는 resources :my_models? (Route 파일에서 복수화해야합니다.)
JellicleCat

내 모든 경로는 복수형입니다.
kakubei

1
오후 5 시가 지나고 키보드에 머리를 부딪 히려고했습니다. 고마워요.
Phantomwhale 2013

19

때로는 경로에 : as 매개 변수를 제공하지 않는 경우도 있습니다.

delete "delete/:id" => "home#delete"

바뀌었다:

delete "delete/:id" => "home#delete", as: :delete

(이상한 예는 무시하고, 우리가 빌드하는 내부 앱에서 방금 만났던 것입니다)


4
이것은 나를 위해 일했습니다. : as를 지정 하면 "_path"를 추가 할 수있는 이름이 주어졌고 Rails가 link_to에서 내가 무엇을 요청했는지 알 수 있습니다. 원래 내 경로 파일이 다음과 같았을 때 : match "/xyz/show/:project_id" => "xyz#show_project", :via => [:get] 내 뷰 마크 업 : <%= link_to "Show Details", xyz_show_path(@project) %> 계속 생성 : http://localhost:3000/xyz/show.1 경로 파일을 다음으로 변경 : match "/xyz/show/:project_id" => "xyz#show_project", :via => [:get], :as => "show" 허용 : <%= link_to "Show Details", show_path(@project) %> 작동.
ayang

0

여기에 착륙하는 다른 사람들은이 상황에있을 수 있습니다.

에 선언 된 단일 리소스가있는 경우 routes.rb:

resource :map

에 개체를 전달할 필요가 없습니다 map_path. 호출 map_path(map)을 시도하면 유사한 동작이 발생합니다 (예 :와 같은 URL map.12).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.