2013-02-01 4 views
2

레일이 왜 깜박입니까 [: notice] = "msg"work where : notice => "msg"? 통지 표시 나는 다음과 같은 코드를 사용하는 경우 :Rails가 [: notice] = "msg"작업을하는 이유는 무엇입니까? : notice => "msg"?

# Case 1 (this works) 
flash[:notice] = 'Candidate was successfully registered.' 
format.html { redirect_to :action => "show_matches", :id => @trial.id } 

이 작동하지 않습니다 :

# Case 2 (this doesn't) 
format.html { redirect_to :action => "show_matches", :id => @trial.id, :notice => "Candidate was successfully registered."} 

하지만 내 응용 프로그램의 다른 영역에서

은, 위의 기술은 잘 작동합니다 :

# Case 3 (this works) 
format.html { redirect_to @candidate, :notice => 'Candidate was successfully created.' } 

내 레이아웃 포함 내역 :

그럼 내 질문은 왜 :notice => ""을 하나의 케이스에서 사용할 수 있습니까?

많은 컨텍스트를 제공하지는 못했지만 내 감각은 실제로 매우 간단하다는 것입니다.

p.s. 이것은 this question과 유사합니다.

답변

4

redirect_to 방법은 두 인수 according to the documentation

:notice 키 넣어 될이고 두번째 인수가 걸린다.

그러나 사례 2에서는 루비가 하나 이상의 해시가 있는지 여부를 알 수 없습니다. 하나의 해시 만 redirect_to 메소드에 전달 된 것으로 간주됩니다.

명시 적으로 각 해시 주위에 괄호를 설정하여 두 번째 해시를 전달하는 루비를 강제 할 수

format.html { redirect_to({:action => "show_matches", :id => @trial.id}, {:notice => "Candidate was successfully registered."}) } 

사건 3 일을 더 모호한 해시 상황이 여기에 없기 때문입니다.

+0

나는 이해합니다! 고맙습니다. 귀하의 설명이 의미가 있으며 귀하의 제안 된 코드가 제 신청서에서 작동합니다. (간단한 설명 : 괄호는 균형이 맞지 않습니다.) – DavidS

관련 문제