[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