2011-01-26 6 views
1

저는 레일즈에서 루비를 처음 접했고 배우기 위해 일부 오픈 소스 코드로 놀아 왔습니다.model_path() 메서드는 어떻게 작동합니까?

model_path(@model) 메서드가 반환하는 내용과 변경 방법을 이해하는 데 몇 가지 문제가 있습니다. 특히 idslug이있는 모델이 있는데 어떤 이유로 model_path(@model)id이 아닌 slug 인 경로를 항상 반환합니다.

이유에 대한 아이디어와이 동작을 어떻게 바꿀 수 있습니까?

답변

0
model_path(@model) 

은 어떤 @model.to_param 반환에

+0

감사를 :id을 대체 할 URL을

/model/:id 

를 생성합니다! 코드가 더 적합합니다. http://domain.com/:id/:slug – slugger

+0

맞춤 경로를 생성하는 쉬운 방법이 있나요? match '/ : id/: slug', : to => "your_controller # show", : as => : custom_model. 그런 다음 뷰 custom_model_path (@ model.id, @ model.slug)에서이를 사용할 수 있습니다. 하지만이 좋은 해결책을 찾지 못한다면, 더 나은 to_param 메소드가 ID와 슬러그를 반환하도록하여 URL이 "/ model/12-blabla"와 같을 것입니다. – egze

+0

12 블레이 블러도 좋아하지만, 컨트롤러가 params [: id]를 사용하는 사용자에게 더 힘들지 않습니까? 모델 인스턴스를 찾으려면 슬러그 또는 ID를 파싱해야합니다. 맞습니까? – slugger

관련 문제