Hola Luis.
Te pongo a continuación el código que comentas del fichero
.\app\controllers\laptops_controller.rb
def new
@laptop = Laptop.new
@successful = true
return render(:action => ‘new.rjs’) if request.xhr?
# Javascript disabled fallback
if @successful
@options = { :action => “create” }
render :partial => “new_edit”, :layout => true
else
return_to_main
end
end
def create
begin
@laptop = Laptop.new(params[:laptop])
@successful = @laptop.save
rescue
flash[:error], @successful = $!.to_s, false
end
return render(:action => 'create.rjs') if request.xhr?
if @successful
return_to_main
else
@options = { :scaffold_id => params[:scaffold_id], :action =>
“create” }
render :partial => ‘new_edit’, :layout => true
end
end
Saludos y gracias.
Fernando González MacÃas
[email protected]
De: [email protected] en nombre de Luis V.
Enviado el: mar 2/6/2007 12:45
Para: La lista sobre Ruby On Rails (rubyonrails.com) en castellano
Asunto: Re: [Ror-es] Problemas con campos con nombre finalizados en _id
¿Puedes poner el método create de laptops_controller?
Parece ser que intenta buscar @laptop y no lo encuentra.
On 2/6/07, Fernando González MacÃas [email protected] wrote:
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]
mailto:[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:
<div class="form-element">
<label for="laptop_siteid">Empresa</label>
<%= 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
Villegas
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]
mailto:[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