2010-05-08 2 views
1

레일을 처음 사용했습니다!레일 콘트롤러 방법이 복수형이 됨

좋아, 사용자 가입 양식을 설정하려고합니다. 그것은 경로

map.resource :user 

그리고 콘솔이 제대로 작동을 통해 사용자를 만들려고에 단일 자원으로 매핑됩니다. 해당 페이지가 렌더링, 다음과 같이

def signup 
    @user = User.new#(params[:user]) 
    end 

def create 
    @user = User.new(params[:user]) 
    #debugger 
    if request.post? 
    if @user.save 
     session[:user] = User.authenticate(@user.login, @user.password) 
     flash[:message] = "Signup successful" 
     redirect_to registries_path   
    else 
     flash[:warning] = "Signup unsuccessful" 
     #redirect_to 'user/signup' 
    end 
    end 
    end 

가입보기 (그리고 내가 뭔가 잘못된 거라고 생각 곳이다) 이제

<% form_tag user_path do %> 
<p>User creation.</p> 
<p><%= error_messages_for 'user' %></p> 

<p> 
    <label>Username:</label> 
    <%= text_field_tag 'login', nil, :size => 20, :maxlength => 20 %> 
</p> 
<p> 
    <label>Password:</label> 
    <%= password_field_tag 'password', nil, :size => 20, :maxlength => 20 %> 
</p> 
<p> 
    <label>Password confirmation:</label> 
    <%= password_field_tag 'password_confirmation', nil, :size => 20, :maxlength => 20 %> 
</p> 
<p> 
    <label>Email:</label> 
    <%= text_field_tag 'email' %> 
</p> 
<p><%= submit_tag 'Signup' %></p> 
<% end %> 

: 사용자의 가입을위한 컨트롤러 코드는 다음과 같이 잘 됐네. 단 하나의 "user_path"에서 양식을 호출했습니다 (저는 생각합니까?). 내가 제출 버튼을 명중 할 때 사용자은 (는) 사용자의 컨트롤러를 호출하려고, 그래서 만약 단수 의미하기 때문에, 그것은, 그것을 나에게

uninitialized constant UsersController 

오류의 선두로부터는 의미가 없다는 오류를 제공합니다 해야 오류가 척척입니다. 내가 서버 로그를 확인하면이 메시지가 표시됩니다 :

Processing ApplicationController#create (for 127.0.0.1 at 2010-05-08 16:26:14) [POST] 
    Parameters: {"commit"=>"Signup", "password_confirmation"=>"[FILTERED]", "action"=>"create", "authenticity_token"=>"yOcHY+rMjaqmu9HS8EwnDqJKbc0Zxictc0y4dtD26ac=", "controller"=>"users", "login"=>"bob", "password"=>"[FILTERED]", "email"=>"[email protected]"} 

NameError (uninitialized constant UsersController): 

params 객체를 파라미터를, 나는 그것이 "사용자"컨트롤러를 호출하는 것을 볼 수 있습니다. 하지만이를 수정하는 방법이나 "사용자"컨트롤러가 아닌 "사용자"컨트롤러를 호출하는 원인을 알 수는 없습니다.

아이디어가 있으십니까? 미리 감사드립니다.

답변

1

사용자는 대개 단수가 아닌 복수로 취급됩니다. RESTful URL에서 유사 URL로 표시하려면 routes.rb를 다음과 같이 설정하십시오.

map.resources :users, 
       :as => 'user' 
+0

오. 나는 한 번에 한 명의 사용자 만있을 것이라고 생각했기 때문에 (IP 주소 당 또는 어떤 것), 단 하나의 리소스가 갈 길이었다. 1 인당 하나의 세션 만 활성화되기 때문에 일부 모델에서 Session을 단일 리소스로 사용하는 방법과 비슷합니까? 이 경우 , 나는 사용자에게 가서 무슨 일이 일어날지를보아야합니다. 덕분에 ! –

+0

예를 들어 사용자가 다른 사용자의 프로필을 볼 수 있도록 허용 할 수 있습니다. – kingjeffrey

+2

좋아, 나는 사용자의 복수 방법에 갔다. 그리고 그것은 내가 원했던 방식으로 작동한다. 감사! :) 세션은 일반적으로 단일 리소스로 취급됩니까? 그렇다면 두 사람이 다르게 대우받는 이유와 어쩌면 보통 복수로 취급되는 것에 관한 정보와 보통 단수로 취급되는 것에 대한 간단한 설명이 있습니까? –

관련 문제