Rails controller method going to plural form
Posted
by Jty.tan
on Stack Overflow
See other posts from Stack Overflow
or by Jty.tan
Published on 2010-05-08T06:33:36Z
Indexed on
2010/05/08
6:38 UTC
Read the original article
Hit count: 267
I'm new to rails!
Ok, I am trying to set up a user signup form. It is mapped as a singular resource in the routes
map.resource :user
And trying to create the user through the console works fine. the controller code for user's signup is as follows:
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
The signup view is as follows (and this is where i think something is going wrong)
<% 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 %>
Now, that page renders just fine. I've called the form on the "user_path" which is singular (i think?). But when I hit the submit button, it gives me an error saying that
uninitialized constant UsersController
the occurence of the error makes sense, since User is meant to be singular, so if it is trying to call the Users controller, it should be chucking an error. When I checked the server log, it shows this message:
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):
In the params, I can see that it is calling the "users" controller. But I'm not sure how to fix that, or what is causing it to call the "users" controller as opposed to the "user" controller.
Any ideas? Thanks in advance!
© Stack Overflow or respective owner