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

错误的发生是有道理的,因为 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):

在参数中,我可以看到它正在调用“用户”控制器。但我不确定如何解决这个问题,或者是什么导致它调用“用户”控制器而不是“用户”控制器。

有任何想法吗?提前致谢!

4

1 回答 1

1

用户通常被视为复数,而不是单数。如果您希望它在 RESTful url 中显示为准单数,请尝试像这样设置您的 routes.rb:

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