[Ror-es] Problema con collection_select

Diego Algorta Casamayou
Thu Feb 9 18:31:19 GMT 2006


Hola a todos.

Estoy haciendo un proyecto personal con Rails y me encuentro con un 
problema. Se los explico lo más resumido posible:

Tengo el siguiente schema de tablas:

ActiveRecord::Schema.define() do

   create_table "departments", :force => true do |t|
     t.column "name", :string, :limit => 30
   end

   add_index "departments", ["name"], :unique => true

   create_table "employees", :force => true do |t|
     t.column "first_name", :string, :limit => 30, :null => false
     t.column "last_name", :string, :limit => 30, :null => false
     t.column "login", :string, :limit => 20, :null => false
     t.column "hashed_password", :string, :limit => 40, :null => false
     t.column "email", :string, :limit => 100
     t.column "department_id", :integer, :null => false
   end

   add_index "employees", ["login"], :unique => true

end

Los modelos:

class Employee < ActiveRecord::Base
   belongs_to :department
end

class Department < ActiveRecord::Base
   has_many :employees
end

Generé un scaffold para Employee y quiero agregarle al partial 
_form.rhtml la funcionalidad para que se pueda asociar el empleado al 
departamento mediante un combo que muestre los departamentos disponibles.

En el employees_controller.rb tengo:

   def new
      = Employee.new
     ered_by_name = Department.find(:all, :order => "name")
   end
   def edit
      = Employee.find(params[:id])
     ered_by_name = Department.find(:all, :order => "name")
   end

En el _form.rhtml tengo:

<p><label for="employee_department_id">Department</label><br/>
<%= collection_select("employee", "department_id", 
ered_by_name, "id", "name", {:include_blank => true}) %></p>

El collection_select funciona perfectamente pues me genera un tag select 
con las opciones de la base de datos adecuadamente.

El problema es que después de llenar los datos del empleado y 
seleccionar un departamento del select, al hacer click en el botón 
"Create" para intentar crear el nuevo empleado me aparece este error:
--------------------------------
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occured while evaluating nil.inject
--------------------------------

Ya no sé qué probar.

¿Alguien tiene una mejor forma de lograr llenar un select con opciones 
de la base de datos y le funciona?

Gracias,
Diego