# \[bug?\] rails form\_for

**URL:** <https://www.ruby-forum.com/t/bug-rails-form-for/149980>\
**Category:** Rails\
**Created:** [October 1, 2008, 10:56pm UTC](https://www.ruby-forum.com/t/bug-rails-form-for/149980 "2008-10-01T22:56:48Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![scottnj](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b9e5f3/32.png) [@scottnj](https://www.ruby-forum.com/u/scottnj)\
**Post date:** [October 1, 2008, 10:56pm UTC](https://www.ruby-forum.com/t/bug-rails-form-for/149980/1 "2008-10-01T22:56:48Z")

</div>

i think there is a bug in how rails automatically detects if a  
form\_for should be a post or put when the controller is in a  
namespace. can someone confirm this, or am i doing something wrong?

### specs

windows xp  
ruby 1.8.6  
rails 2.1.1  
mysql 5

### in the terminal

rails bug\_test  
cd bug\_test

# edit database.yml

ruby script/generate model User name:string  
ruby script/generate controller admin/site\_users  
rake db:migrate

### config/routes.rb

ActionController::Routing::Routes.draw do |map|  
map.resources :users  
map.namespace :admin do |admin|  
admin.resources :site\_users  
admin.resources :roles  
end  
end

### controllers/admin/site\_users\_controller.rb

class Admin::SiteUsersController \< ApplicationController  
def index  
@users = User.find(:all)  
end  
def new  
@user = User.new  
end  
def edit  
@user = User.find(params[:id])  
end  
def create  
@user = User.new(params[:user])  
respond\_to do |format|  
if @user.save  
flash[:notice] = ‘User was successfully created.’  
format.html { redirect\_to( admin\_site\_users\_path )}  
format.xml { render :xml =\> @user, :status  
=\> :created, :location =\> @user }  
else  
flash.now[:error] = “We couldn’t set up that account.”  
format.html { render :action =\> “new” }  
format.xml { render :xml =\> @user.errors, :status  
=\> :unprocessable\_entity }  
end  
end  
end  
end

### views/admin/site\_users/edit.html.erb

# Editing a user erb
\<%= error\_messages\_for :user %\>
## \<% if @user.respond\_to?(:new\_record?) && @user.new\_record? %\> ERROR =\> NEW RECORD \<% else %\> OLD RECORD =\> form\_for method should be put \<% end %\>
\<% form\_for(:user, :url =\> admin\_site\_user\_path ) do |f| %\> 

\<%= label\_tag 'name' %\> \<%= f.text\_field :name %\>

\<%= f.submit 'Update' %\>

\<% end %\>
