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 %>