2013-06-28 5 views
0

외의 위치에있는 경우 나 사용자가 가입 한 경우 있도록 만들려고 노력하고 실패합니다. 그러나 사용자가 등록 할 때 사용자 이름과 전자 메일이 고유해야 함을 나타내는 오류 메시지를 표시하고 '새'페이지를 다시 렌더링합니다.검증은 저장 한 후 리디렉션 저장된 객체

이것은 내가 대신 @user로 리디렉션 경우 잘 작동합니다.

내 컨트롤러 :

def create 
    @user = User.new(params[:user]) 
    respond_to do |format| 
     if @user.save 
     login(@user) 
     format.html { redirect_to "static/tutorial", success: 'Congratulations on starting your journey!' } 
     format.json { render json: @user, status: :created, location: @user } 
     else 
     format.html { render action: "new" } 
     format.json { render json: @user.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

그리고 이러한 User.rb의 관련 라인은 다음과 같습니다

validates_confirmation_of :plain_password 
validates_presence_of :name, :username, :email 
validates_presence_of :plain_password, :on => :create 
validates_uniqueness_of :email, :username 
+0

당신은 당신의 코드를 리팩토링에 대해 생각해야한다. 현재'respond_to' 블록 내에서 조건부 논리를 수행해야하는 이유는 없습니다. – zeantsoi

+0

@zeantsoi 레일 제너레이터가 개발 한 코드로, 생각해 보면 꽤 합리적입니다. 'respond_to' 블록에 조건부 로직을 넣을 이유가 없습니다. – Matt

답변

0

내가

validates_presence_of :plain_password, :on => :create 

가 있습니까 상당히 무서워 볼 암호화되지 않은 암호를 데이터베이스에 저장 하시겠습니까? 부분적으로 - 당신은 내가 그것을 알아 냈

class UsersController < ApplicationController 
    respond_to :html, :json 

    def new 
    @user = User.new 
    end 

    def create 
    @user = User.new(params[:user]) 
    if @user.save 
     # set sessions 
    end 

    respond_with @user, location: 'static/tutorial' 
    end 
end 

respond_to/respond_with이 블로그 게시물 http://bendyworks.com/geekville/tutorials/2012/6/respond-with-an-explanation

+0

Ahahaha는, 아니 .. plain_password은 다음 데이터베이스라는 암호의 필드에 암호화는 누가 받 attr_accessor입니다. 그것은 실제로 데이터베이스에서 hashed_password라고 불러야하지만 암호를 이미 호출 했으므로 변경하지 않아도됩니다. 그래도 고마워! – javanut13

0

에게 읽기 사용을 고려할 수 있습니다 문제에 대해서는

. 아마도에 대한 자세한 설명

format.html { redirect_to tutorial_path, success: 'Congratulations on starting your journey!' } 

있다

:

match "tutorial" => "static#tutorial" 

그리고 대신 문자열의 리디렉션 :

나는 나의 루트 파일의 튜토리얼에 경로를 추가하는 데 필요한 이것의 뒤에 이론 그러나 나는 대답 할 누군가 다른 것을 위해 그것을 떠날 것이다. 이것이 내가 어떻게 해결 했는가.

+0

네, 경로 파일에 애플리케이션의 접근 가능한 모든 경로를 정의해야합니다. 'get' 문법을 사용하는 것이 좋습니다. '액션 정적 /':이 '일치와, 어쨌든 GET 요청에 사용할 수있는'static' 컨트롤러에서 –

+0

모든 페이지를 http://guides.rubyonrails.org/routing.html#non-resourceful-routes 읽기 컨트롤러 = > "정적" – javanut13

관련 문제