1

Railsは初めてです!

OK、ユーザー登録フォームを設定しようとしています。ルート内の単一のリソースとしてマップされます

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

Userは特異であることが意図されているため、エラーの発生は理にかなっています。したがって、Usersコントローラーを呼び出そうとしている場合は、エラーをチャッキングしているはずです。サーバーログを確認すると、次のメッセージが表示されます。

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"=>"bob@thetester.com"}

NameError (uninitialized constant UsersController):

パラメータでは、「users」コントローラーを呼び出していることがわかります。しかし、それを修正する方法や、「ユーザー」コントローラーではなく「ユーザー」コントローラーを呼び出す原因がわかりません。

何か案は?前もって感謝します!

4

1 に答える 1

1

ユーザーは通常、単数形ではなく複数形として扱われます。RESTful URLで準単数として表示する場合は、routes.rbを次のように設定してみてください。

map.resources :users,
              :as => 'user'
于 2010-05-08T06:39:54.230 に答える