Forum: Rails-ES validations: duda mostrando errores

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Miguel Angel Calleja Lázaro (Guest)
on 2007-05-09 17:59
(Received via mailing list)
He añadido unos validates a mi model. La cosa es que me salga el listado
de errores en la vista cuando no se grabe, pero dependiendo de si uso en
mi controaldor  redirect_to :action no me funciona, sólo me funciona con
:render_action

Mi model:
validates_presence_of :titulo,:texto,:message=>'campo requerido'
validates_uniqueness_of :titulo, :message=>'ya existe una foto con ese
nombre'


Mi helper:
def pintar_errores(objeto)
        count=objeto.errors.count
  unless count.zero?
        how=plural_errores(count)
        html={}
    html["class"]="errores"
        header_message="Hay #{count} #{how}: "
        error_messages=objeto.errors.full_messages.map {|msg|
content_tag(:li,msg)}
        content_tag(:div, content_tag(:h2,header_message)<<
        content_tag(:ul,error_messages),html)
  else
        ''
  end
end

Mi controlador:
  def create_foto
    @foto=Foto.new(params[:foto])
    if @foto.save
      flash[:notice]='La foto "'removed_email_address@domain.invalid+'" ha sido 
creada'
      logger.info 'La foto "'removed_email_address@domain.invalid+'" ha sido 
creada'
      redirect_to :action =>'edit_proyecto', :id=>@foto.proyecto_id
    else
      logger.info 'La foto "'removed_email_address@domain.invalid+'" ha sido 
creada'
      redirect_to :action=>'new_foto', :id=>@foto.proyecto_id
    end
  end

Mi vista:
<%=pintar_errores(@foto)%>
....

Si doy de alta una foto, en el caso de que coja los validates en el
controlador no se graba, se mete en el else y me redirige al action
'new_foto' , pero en la vista  no me muestra los errores del validates.
 Sólo me pasa cuando uso redirect_to :action, cuando tengo
:render_action me funciona perfectamente y si me los muestra.
Qué puedo hacer para que se muestren usando el redirect_to :action?
Gracias
Damian J. (Guest)
on 2007-05-09 18:29
(Received via mailing list)
On 5/9/07, Miguel Angel Calleja Lázaro <removed_email_address@domain.invalid> 
wrote:
> Si doy de alta una foto, en el caso de que coja los validates en el
> controlador no se graba, se mete en el else y me redirige al action
> 'new_foto' , pero en la vista  no me muestra los errores del validates.
>  Sólo me pasa cuando uso redirect_to :action, cuando tengo
> :render_action me funciona perfectamente y si me los muestra.
> Qué puedo hacer para que se muestren usando el redirect_to :action? Gracias

Y por qué no utilizarías el render :action ?
Miguel Angel Calleja Lázaro (Guest)
on 2007-05-09 18:32
(Received via mailing list)
Damian J.
escribió:
>>
>
>Y por qué no utilizarías el render :action ?
>_______________________________________________
>Ror-es mailing list
>removed_email_address@domain.invalid
>http://lists.simplelogica.net/mailman/listinfo/ror-es
>
>
>
necesito pasar un parámetro y que se ejecute el método, con render
:action sólo saca la vista, no? por éso utilizo redirect_to
podría hacer:

new_foto
render_action 'new_foto'
pero cómo le paso el parámetro a new foto?
Jaime M. (Guest)
on 2007-05-09 19:01
Miguel Angel Calleja Lázaro wrote:

> necesito pasar un pará­¥tro y que se ejecute el mé´¯do, con render
> :action s󬯠saca la vista, no? por 鳯 utilizo redirect_to
> podrí¡ hacer:

Revisa render :partial :

 render :partial => "un_partial", :object => @un_objeto

posiblemente te sea de ayuda.

---
Jaime Mora R.
Hernan F. (Guest)
on 2007-05-09 19:31
(Received via mailing list)
hola
que pasaría con esto ?

Controller
def new
  @foto = Photo.new
  @projecto = params[:projecto_id]
end

def create_photo
  @foto=Foto.new(params[:foto])

  if @photo.save
    ...
  else
     logger.info 'La foto "'removed_email_address@domain.invalid+'" no ha sido 
creada'
     @projecto = params[:photo][:projecto_id]
     render :action => 'new'
  end
end


Saludos
hernan
Miguel Angel Calleja Lázaro (Guest)
on 2007-05-09 20:16
(Received via mailing list)
Hernan F.
escribió:
>   @foto=Foto.new(params[:foto])
>
>
>
Si señor, éso es, crearme la instancia en el else y usar render action,
me funciona, muchas gracias
This topic is locked and can not be replied to.