2012-02-15 7 views
2

나는 내가 따르고있는 튜토리얼에 문제가있다. 유효성 검사가 통과되지 않으면 Rails는 동작을 다시 렌더링합니다. 모든 것이 잘 작동하지만 분명히 URL이 같은 보이지 않는 :Rails가 객체 대신 렌더링 대신 리디렉션됩니까?

: - - 버튼

http://localhost:3000/Users을 타격하기 전에

http://localhost:3000/signup 유효하지 않은 세부 사항

으로 버튼을 눌렀을 한 것은 코드
@user = User.new(params[:user]) 
if @user.save 
flash[:success] = "Welcome to the Sample Application!" 
redirect_to @user 
else 
    render 'new' 
end 

올바른 URL 인 을 표시하고이 form_for를 사용하여 세부 정보와 함께 채우도록 reduser_to와 함께 @user 개체를 전달해야합니까? @user에 의해 입력 되었습니까?

답변

0

잘 호출하면 기본적으로 이제 그 부분을 사용하도록 알려줍니다. 따라서 URL은 렌더링 된 뷰가 다르더라도 지정된 동작 (이 경우에는/Users)과 여전히 일치합니다.

redirect_to some_path({:data => 1, :var => 2}) 
+0

유일한 문제는 사용자 개체를 새 위치로 전달할 수 없다는 것입니다. 폼을 채우고 오류를 읽으려면 해당 사용자 개체를 사용해야합니다. – andy

0

아니, 적어도 정말 redirect_to가로 서버 응답을 할 수 있기 때문에 HTTP :

redirect_to new_user_path(@user) 

또한 같은 매개 변수를 명시 적으로 할 수 있습니다 : 여기

는하지만 redirect_to를 사용하는 방법입니다 응답을 리디렉션하면 클라이언트가 지정된 URL을 가져옵니다. 이것은 대응하는 Rails 액션이 새로운 컨텍스트에서 호출됨을 의미하며, 사용자 객체와 같은 로컬 변수에 액세스 할 수 없게 만듭니다. 당신이 할 수있는 유일한 방법은 데이터베이스에 사용자를 저장하는 것입니다 (어쩌면 일부 특수 임시 테이블에서). 그런 다음 id를 매개 변수로 가져 오거나 쿠키에 데이터를 저장하고 호출 된 작업에서 검색하여 값을 설정합니다 새로운 사용자 객체에. 그러나 나에게 두 옵션 모두 올바른 URL을 가지고 노력할만한 가치가없는 것 같습니다.