Hola Luis. De nuevo muchas gracias por todo el interés que te estás
tomando. Llevo dos dÃas tres dÃas con Rails y los comienzos se hacen
difÃciles, aunque al ver lo que se va consiguiendo poco a poco, ilusiona
;—))))
Te adjunto parte del log del development.log donde se muestra el error,
pero no soy capaz de interpretarlo. Quizás esté relacionada con la
definición del campo referenciado y la lista desplegable asociada al
mismo.
Processing LaptopsController#Create (for 127.0.0.1 at 2007-02-06
12:04:34) [POST]
Session ID: 73fc44b459c04494215b1f9060a4c4a0
Parameters: {“commit”=>“Create”, “action”=>“Create”,
“id”=>“1170759857140”, “controller”=>“laptops”,
“laptop”=>{“site_id”=>“1”, “num_movil”=>“asdfasdf”,
“umts”=>“asdfadfsasdf”, “nombre”=>“safd”, “observaciones”=>“asdfasdf”,
“modelo”=>“asdf”, “fecha_alta(1i)”=>“2007”, “ram”=>“asdf”,
“disco_duro”=>“asdf”, “fecha_alta(2i)”=>“2”, “fecha_alta(3i)”=>“6”,
“marca”=>“asdf”}, “scaffold_id”=>“laptop”}
Rendering laptops/Create
ActionView::TemplateError (Called id for nil, which would mistakenly be
4 – if you really wanted the id of nil, use object_id) on line #1 of
app/views/laptops/Create.rjs:
1: @options = { :scaffold_id => params[:scaffold_id], :action => “view”,
:id => @laptop.id }
2: @create_options = @options.merge(:action => “create”, :id =>
params[:id])
3:
4: if @successful
#{RAILS_ROOT}/app/views/laptops/Create.rjs:1:in
__bind_1170759874_812000' #{RAILS_ROOT}/app/views/laptops/Create.rjs:0:in
__bind_1170759874_812000’
C:/RUBY/lib/ruby/gems/1.8/gems/activesupport-1.4.0/lib/active_support/core_ext/object/extending.rb:44:in
[]' C:/RUBY/lib/ruby/gems/1.8/gems/activesupport-1.4.0/lib/active_support/core_ext/object/extending.rb:44:in
instance_exec’
C:/RUBY/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_view/helpers/prototype_helper.rb:313:in
initialize' C:/RUBY/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_view/helpers/prototype_helper.rb:625:in
new’
C:/RUBY/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_view/helpers/prototype_helper.rb:625:in
update_page' #{RAILS_ROOT}/app/views/laptops/Create.rjs:0:in
_run_rjs_47app47views47laptops47Create46rjs’
Saludos y gracias por todo.
De: [email protected] en nombre de Luis V.
Enviado el: mar 2/6/2007 11:51
Para: La lista sobre Ruby On Rails (rubyonrails.com) en castellano
Asunto: Re: [Ror-es] Problemas con campos con nombre finalizados en _id
Mira en development.log justo cuando le des a create new. Cuando pasa lo
de la ruedecita, y no hace na más, suele ser que ha petado en algún
sitio.
Si estás desarrollando con RadRails, utiliza el comando tail en
development.log para ver el log avanzando conforme haces las acciones.
Pega el trocito de log y a ver si te podemos ayudar.
Un saludo
On 2/6/07, Fernando González MacÃas [email protected] wrote:
Gracias Luis.
Efectivamente supongo que debe ser el comportamiento habitual en
AjaxScaffold respecto a las claves foráneas. El caso es que con el
comentario tuyo ya he conseguido mostrar la información del campo
referenciado, tanto en list, como en la edición y adicción de registros.
Es decir que obtengo el desplegable que es lo que querÃa.
Evidentemente en el _form.rhtml he tenido que incluir las etiquetas
correspondientes. Como sigue:
Empresa
<%= select 'laptop','site_id' , Site.find_all.collect {|p|
[p.nombre, p.id] } %>
El tema ahora es que en la edición no obtengo ningún problema, puedo
modificar cualquier campo, incluido el campo empresa referenciado a
través del desplegable. Sin embargo a la hora de añadir registros
nuevos, cuando voy a guardar se me queda en una especie de bucle,
continuamente con la “ruedecita dando vueltas” propia de operación en
curso.
¿Se le ocurre a alguien a que puede ser debido?. Pongo a continuación
el fuente de laptop.rb. Son dos tablas:laptops y sites. Un portátil
pertenece a un sitio(empresa).
require ‘ajax_scaffold’
class Laptop < ActiveRecord::Base
validates_presence_of :nombre
belongs_to :site, :foreign_key => "site_id"
@scaffold_columns = [
AjaxScaffold::ScaffoldColumn.new(self, { :name => "nombre"}),
AjaxScaffold::ScaffoldColumn.new(self, { :name => "site_id",
:eval => "laptop.site.nombre", :label => "Empresa"}),
AjaxScaffold::ScaffoldColumn.new(self, { :name => "marca"}),
AjaxScaffold::ScaffoldColumn.new(self, { :name => "modelo"}),
AjaxScaffold::ScaffoldColumn.new(self, { :name => "disco_duro"}),
AjaxScaffold::ScaffoldColumn.new(self, { :name => "ram"}),
AjaxScaffold::ScaffoldColumn.new(self, { :name => "fecha_alta"}),
AjaxScaffold::ScaffoldColumn.new(self, { :name => "umts"}),
AjaxScaffold::ScaffoldColumn.new(self, { :name => "num_movil"}),
AjaxScaffold::ScaffoldColumn.new(self, { :name =>
“observaciones”}),
]
end
Saludos y gracias.
Fernando González Macias
[email protected]
De: [email protected] en nombre de Luis V.
Enviado el: mar 2/6/2007 08:36
Para: La lista sobre Ruby On Rails ( rubyonrails.com) en castellano
Asunto: Re: [Ror-es] Problemas con campos con nombre finalizados en
_id
En ajax scaffold no te pone las claves foráneas supongo que porque son
números que no dicen nada al usuario final.
Hasta donde yo sé, tienes que definirlas manualmente en el modelo. Yo
lo hago asÃ:
Imagina que la tabla tiene un id, un nombre y una clave foránea que es
cliente_id
cliente_usuario.rb:
require ‘ajax_scaffold’
class ClienteUsuario < ActiveRecord::Base
belongs_to :cliente
@scaffold_columns = [
AjaxScaffold::ScaffoldColumn.new(self, { :name => "nombre"}),
AjaxScaffold::ScaffoldColumn.new(self, { :name => "cliente_id",
:eval => "cliente_usuario.cliente.descripcion", :label =>
“Cliente”})
]
end
La primera columna es lo que hace por defecto.
La segunda hace que se evalúe lo que le pasas a :eval, asà puedes
tener lo que tú quieras poner.
Más información:
http://www.height1percent.com/articles/2006/04/18/ajaxscaffold-3-1-0-released
Mira donde pone “Handling associations from the belongs_to side of
things”
Si hay alguna otra manera de hacerlo más fácil, me encantarÃa saberlo.
Yo te he dado lo que he podido encontrar.
Ah y otra cosa, creo que al generar hay que poner el nombre de la
tabla en singular. Eso creo vamos.
Un saludo
On 2/5/07, Fernando González MacÃas < [email protected]>
wrote:
Tengo un problema que no entiendo bien.
Tengo una tabla “laptops” en la cual un campo site_id de tipo int
(11) hará
referencia al “site” al que pertenece dicho “laptop”. El caso es que
si la
pongo con dicha nomenclatura site_id al realizar el comando:
C:> ruby script\generate ajaxscaffold Laptops , dicho campo no lo
incluye en
el formulario.
¿Esto es por alguna regla delimitada?. ¿Existe forma de cambiar
dicho
comportamiento?
Fernando González MacÃas
[email protected]
Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es
Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es
Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es