Pasar variable. Es MUY basico, pero no me sale

---------------CONTROLADOR----------------------------------------
def crear
@current_user = Usuario.authenticate(params[:login],
params[:password])
if @current_user
@nota = Nota.new(:fecha => params[:fecha], :descripcion =>
params[:descripcion], :enviado_mail => params[:enviado_mail],
:usuario_id => @current_user.id)
if @nota.save
flash[:notice] = “¡Anotado en tu cuenta!”
redirect_to :action => “index”
else
flash[:notice] = @nota.errors.full_messages
render :action => “index”
end
else
flash[:notice] = “No existe un usuario con ese password o login”
render :action => ‘index’
end
end

--------------------VISTA----------------------------------------------
<% form_for :nota, :url => {:action => “crear”} do |form| %>

<%= form.label "Nota a tomar:" %>
<%= form.text_area :descripcion, :class => "text", :cols => 70, :rows => 15 %>

Me da error al guardar la nota del controlador. he probado varias cosas,
lo ultimo que me dice es que :descripcion esta vacia (lo tengo validado)
y no esta vacia. Es como si ese campo no lo cogiese. Aunque en realidad
creo que lo que esta mal es en mi controlador lo de :descripcion =>
params[:descripcion].

Necesito hacerlo asi (pero que funcione para meter en ID del usuario
previamente validado (Ultimo atributo que meto, como vereis).

Gracias!

Ricardo M. wrote:

2008/6/8 Javier G. [email protected]:

---------------CONTROLADOR----------------------------------------
def crear
@current_user = Usuario.authenticate(params[:login],
params[:password])
if @current_user
@nota = Nota.new(:fecha => params[:fecha], :descripcion =>
params[:descripcion], :enviado_mail => params[:enviado_mail],
:usuario_id => @current_user.id)

Seria params[:nota][:descripcion] el parametro correcto, porque estas
usando form_for. Mira el HTML o el dump del params cuando sale la
excepcion.

Necesito hacerlo asi (pero que funcione para meter en ID del usuario
previamente validado (Ultimo atributo que meto, como vereis).

Si tu model Usuario “has_many” Notas, puedes crear una nueva nota de
la siguiente manera :
@nota = current_user.notas.create(params[:nota])

�Falta Uno! - http://www.falta-uno.com.ar/
Ricardo M.

MIL GRACIAS! tenia lo de “has many” me faltaba eso. Muchas gracias tio.

@nota = @current_user.notas.create(params[:nota])

(faltaba una @ pero si).

:slight_smile:

2008/6/8 Javier G. [email protected]:

---------------CONTROLADOR----------------------------------------
def crear
@current_user = Usuario.authenticate(params[:login],
params[:password])
if @current_user
@nota = Nota.new(:fecha => params[:fecha], :descripcion =>
params[:descripcion], :enviado_mail => params[:enviado_mail],
:usuario_id => @current_user.id)

Seria params[:nota][:descripcion] el parametro correcto, porque estas
usando form_for. Mira el HTML o el dump del params cuando sale la
excepcion.

Necesito hacerlo asi (pero que funcione para meter en ID del usuario
previamente validado (Ultimo atributo que meto, como vereis).

Si tu model Usuario “has_many” Notas, puedes crear una nueva nota de
la siguiente manera :
@nota = current_user.notas.create(params[:nota])

¡Falta Uno! - http://www.falta-uno.com.ar/
Ricardo M.