From: "Bi ..." Date: 2010-03-16T21:41:33+09:00 Subject: NoMethodError First, what I wanna do is: Have a page where I must write a name and choose a option on a select... The "nome" is a string of the Class Perfil and "acesso" is a string of the Class TipoAcesso. TipoAcesso belongs_to Perfil Perfil has_many TipoAcesso I've created 3 TipoAcesso on the Rails Console, where those TipoAcesso don't will change, the user just choose one of them. ------- Then I got this error message: >>>>> NoMethodError in PerfisController#create You have a nil object when you didn't expect it! The error occurred while evaluating nil.call <<<<< With this respective code: >>>>> Perfis Controller<<<<<<<< class PerfisController < ApplicationController def index end def lista @perfis = Perfil.all respond_to do |format| format.html # index.html.erb format.xml { render :xml => @perfis } end end # GET /tipo_acessos/1 # GET /tipo_acessos/1.xml def show @perfil = Perfil.find(params[:id]) respond_to do |format| format.html # show.html.erb format.xml { render :xml => @perfil } end end # GET /tipo_acessos/new # GET /tipo_acessos/new.xml def new @perfil = Perfil.new respond_to do |format| format.html # new.html.erb format.xml { render :xml => @perfil } end end # GET /tipo_acessos/1/edit def edit @perfil = Perfil.find(params[:id]) end # POST /tipo_acessos # POST /tipo_acessos.xml def create @perfil = Perfil.new(params[:perfil]) respond_to do |format| if @perfil.save flash[:msg] = 'Perfil criado com sucesso.' redirect_to :action => 'show' else format.html { render :action => "new" } format.xml { render :xml => @perfil.errors, :status => :unprocessable_entity } end end end # PUT /tipo_acessos/1 # PUT /tipo_acessos/1.xml def update @perfil = Perfil.find(params[:id]) respond_to do |format| if @perfil.update_attributes(params[:perfil]) flash[:msg] = 'Perfil editado com sucesso.' redirect_to :action => 'show' else format.html { render :action => "edit" } format.xml { render :xml => @perfil.errors, :status => :unprocessable_entity } end end end # DELETE /tipo_acessos/1 # DELETE /tipo_acessos/1.xml def destroy @perfil = Perfil.find(params[:id]) @perfil.destroy respond_to do |format| format.html { redirect_to(tipo_acessos_url) } format.xml { head :ok } end end end >>>>>>>>>>View Show<<<<<<<<<<<<<

Detalhes do perfil <%= @perfil.nome %>

Nome: <%= @perfil.nome %>

Tipo de acesso: <%= @perfil.acesso %>

<%= link_to 'Editar', :action => 'edit' %> <%= link_to 'Excluir', :action => 'destroy', :confirm => 'Confirma a exclus達o do registro?'%>

>>>>>>>>>>>>>>>>View New<<<<<<<<<<<<<<<<<

Cria巽達o de perfil

<% form_for :perfil, :url => {:action => 'create'} do |form| %>

<%= form.label :nome, 'Nome' %>

<%= form.text_field :nome %>

<%= form.label :acesso, 'Tipo de acesso' %>

<%= select :acesso, :acesso.id, TipoAcesso.find(:all).collect{|tipo| [tipo.acesso, tipo.id]}, {:prompt => 'Escolha um acesso'} %>

<%= form.submit "Criar" %> <% end %> >>>>>>>>>Model Perfil<<<<<<<<<<< class Perfil < ActiveRecord::Base validates_presence_of :nome, :message => "deve ser preenchido." has_many :tipo_acesso end >>>>>>>>>Migrate Perfil<<<<<<<<<<< class CreatePerfis < ActiveRecord::Migration def self.up create_table :perfis do |t| t.string :nome t.string :acesso t.timestamps end end def self.down drop_table :perfis end end >>>>>>>>>>>>>Model TipoAcesso<<<<<<<<<<<<<<< class TipoAcesso < ActiveRecord::Base belongs_to :perfil end >>>>>>>>>>>>>>Migrate TipoAcesso<<<<<<<<<<<<<<< class CreateTipoAcessos < ActiveRecord::Migration def self.up create_table :tipo_acessos do |t| t.string :acesso t.timestamps end end def self.down drop_table :tipo_acessos end end ------------ Then I've change the method "create" of PerfisController from: >>>>> def create @perfil = Perfil.new(params[:perfil]) respond_to do |format| if @perfil.save flash[:msg] = 'Perfil criado com sucesso.' redirect_to :action => 'show' else format.html { render :action => "new" } format.xml { render :xml => @perfil.errors, :status => :unprocessable_entity } end end end <<<<< to: >>>>> def create @perfil = Perfil.new(params[:perfil]) respond_to do |format| if @perfil.save format.html do flash[:msg] = 'Perfil criado com sucesso.' redirect_to :action => 'show' end format.xml { render :xml => @perfil.to_xml } else format.html { render :action => "new" } format.xml { render :xml => @perfil.errors, :status => :unprocessable_entity } end end end <<<<< And now i'm getting the following error message: >>>>> ActiveRecord::RecordNotFound in PerfisController#show Couldn't find Perfil without an ID RAILS_ROOT: C:/Documents and Settings/pauloandre/Meus documentos/NetBeansProjects/caos_local Application Trace | Framework Trace | Full Trace C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/base.rb:1572:in `find_from_ids' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/base.rb:616:in `find' C:/Documents and Settings/pauloandre/Meus documentos/NetBeansProjects/caos_local/app/controllers/perfis_controller.rb:18:in `show' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/base.rb:1572:in `find_from_ids' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/base.rb:616:in `find' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:1322:in `perform_action' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/filters.rb:617:in `call_filters' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/filters.rb:610:in `perform_action_with_filters' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/benchmarking.rb:68:in `perform_action_with_benchmark' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:17:in `ms' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:10:in `realtime' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:17:in `ms' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/benchmarking.rb:68:in `perform_action_with_benchmark' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/rescue.rb:160:in `perform_action_with_rescue' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/flash.rb:141:in `perform_action_with_flash' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:523:in `process' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/filters.rb:606:in `process_with_filters' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:391:in `process' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:386:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/routing/route_set.rb:433:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/dispatcher.rb:88:in `dispatch' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/dispatcher.rb:111:in `_call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/dispatcher.rb:82:in `initialize' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/query_cache.rb:29:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/query_cache.rb:29:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/query_cache.rb:34:in `cache' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/query_cache.rb:9:in `cache' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/query_cache.rb:28:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:361:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/head.rb:9:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/methodoverride.rb:24:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/params_parser.rb:15:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/rewindable_input.rb:25:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/session/cookie_store.rb:93:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/reloader.rb:9:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/failsafe.rb:11:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/lock.rb:11:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/dispatcher.rb:106:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/rails/rack/static.rb:31:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/urlmap.rb:48:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/urlmap.rb:40:in `each' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/urlmap.rb:40:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/rails/rack/log_tailer.rb:17:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/content_length.rb:13:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/handler/webrick.rb:50:in `service' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/1.8/webrick/httpserver.rb:104:in `service' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/1.8/webrick/httpserver.rb:65:in `run' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/1.8/webrick/server.rb:173:in `start_thread' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/base.rb:1572:in `find_from_ids' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/base.rb:616:in `find' C:/Documents and Settings/pauloandre/Meus documentos/NetBeansProjects/caos_local/app/controllers/perfis_controller.rb:18:in `show' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:1322:in `perform_action' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/filters.rb:617:in `call_filters' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/filters.rb:610:in `perform_action_with_filters' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/benchmarking.rb:68:in `perform_action_with_benchmark' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:17:in `ms' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:10:in `realtime' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:17:in `ms' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/benchmarking.rb:68:in `perform_action_with_benchmark' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/rescue.rb:160:in `perform_action_with_rescue' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/flash.rb:141:in `perform_action_with_flash' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:523:in `process' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/filters.rb:606:in `process_with_filters' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:391:in `process' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:386:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/routing/route_set.rb:433:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/dispatcher.rb:88:in `dispatch' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/dispatcher.rb:111:in `_call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/dispatcher.rb:82:in `initialize' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/query_cache.rb:29:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/query_cache.rb:29:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/query_cache.rb:34:in `cache' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/query_cache.rb:9:in `cache' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/query_cache.rb:28:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:361:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/head.rb:9:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/methodoverride.rb:24:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/params_parser.rb:15:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/rewindable_input.rb:25:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/session/cookie_store.rb:93:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/reloader.rb:9:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/failsafe.rb:11:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/lock.rb:11:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/dispatcher.rb:106:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/rails/rack/static.rb:31:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/urlmap.rb:48:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/urlmap.rb:40:in `each' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/urlmap.rb:40:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/rails/rack/log_tailer.rb:17:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/content_length.rb:13:in `call' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/handler/webrick.rb:50:in `service' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/1.8/webrick/httpserver.rb:104:in `service' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/1.8/webrick/httpserver.rb:65:in `run' C:/Netbeans/NetBeans 6.7.1/ruby2/jruby-1.2.0/lib/ruby/1.8/webrick/server.rb:173:in `start_thread' :1:in `start' <<<<<< I've tried to let the role code organized, i hope this works... I allready appreciate any kind of help. :) -- Posted via http://www.ruby-forum.com/.