2011-04-11 1 views
1

소년이 케이크 한 조각처럼 보이지만, 나는 routing bible에서 찾을 수 없습니다 ':'match/post/: pid '를 사용하지 않고'pid '와 같은 다른 이름으로? 나는 특히 '깨지기'때문에 사용하지 않는 것이 좋습니다. 그것이 ID에이 아니기 때문에,변경 기본 매개 변수 '를 변경할 수있는 방법이 있나요</p> <p>레일 3 라우팅 URL의 ID가

pid = params[:id] 

작품 이미 있지만, 잘못된 코드입니다 :

pid = params[:pid] 

일 :

편집 내가 할 수 있다면 이것은 단지 성공, 확인하려면 그곳에. 객체를 가져 오기 할 때 수행

def to_param 
    pid 
end 

을 그리고 :

http://railscasts.com/episodes/63-model-name-in-url

은 기본적으로 당신이 모델에 to_param 메소드를 오버라이드 (override) :

답변

0

당신은 당신의 모델에 to_param 방법을 정의 할 수 있습니다 : 다음

def to_param 
    pid 
end 

생성 된 모든 링크 등 pid 대신 id의를 사용합니다. 그리고 귀하의 컨트롤러에서, params[:id] 실제로 pid, 아니 id 줄 것입니다.

+0

위와 같은 설명 - params [: id]가 아닌 pid를 얻기 위해 params [: pid]를 사용하고 싶습니다. – aronchick

+0

그 다음에는 경로를 하드 코딩해야합니다. –

+0

경로를 하드 코딩해야한다는 나쁜 소식을 깨기 때문에 수표를받습니다. – aronchick

3

난 당신이 바로이 확인되었다 경우 이 컨트롤러에서 :

@object= Object.find_by_pid(params[:id]) 

행운을 빌어 요!

+0

매개 변수 이름으로': pid'를 사용하여 커스텀 경로를 정의하지 않는 한'params [: id]'를 사용하지 않고'params [: pid]'를 사용하지 않습니다. –

+0

고정 된 .. 내 나쁜 –

+0

params [: id]에 id가 아닌 pid가 있기 때문에이 냄새가납니다. 나는 매개 변수 [: pid]를 사용하여 PID를 얻고 싶습니다. – aronchick