Saludos y primera duda

Hola gente, me doy la bienvenida a mi mismo a esta lista :stuck_out_tongue: Espero poder
aprender y ayudar en lo que pueda aki :smiley:

A ver, tengo un problemilla con rails que me tiene loco… a ver si
alguien sabe que me esta pasando.

Estoy intentando validar los campos de un formulario con los famosos
validates_presence_of y tal y que muestre los errores en el formulario
como lo hace por defecto rails, pero no hay manera. Cuando le doy a
crear, parece que detecta que hay un error y no puede guardar, pero no
me muestra los errores que me deberia mostrar la función
error_messages_for …

A ver si alguien intuye por donde pueden ir los tiros, porque estoy en
blanco… Comentar que en otros modelos lo he usado sin problemas, la
diferencia que este lo he creado a mano, y los otros con scallfold.

Modelo:
class Comment < ActiveRecord::Base
belongs_to :comic

validates_presence_of :nick, :email, :comment,
:message => l(:HOME_ERROR_COMMENT_CAMPO_VOID)

validates_format_of :email, :with =>
/^(\w)+(.\w)*@([\w-]+.)+[\w-]{2,4}$/,
:message => l(:HOME_ERROR_COMMENT_VALID_MAIL)

end

Controlador:
class CommentController < ApplicationController

def new
@comic = Comic.find(params[:idComic])
@comment = Comment.new
if (params[:context] == “tabs”)
render(:layout => false)
end
end

def create
@comment = Comment.new(params[:comment])
if @comment.save
flash[:notice] = l(:HOME_COMMENT_CREATED)
render_component(:controller => “comment”, :action => “new”,
:params => {:context => “tabs”, :idComic => @comment.idComic} )
else
render_component(:controller => “comment”, :action => “new”,
:params => {:context => “tabs”, :idComic => @comment.idComic} )
end
end

end

Vista con parcial incluido:

<%=error_messages_for ‘comment’ %>

<%= form_remote_tag :update => ‘body_info’,
:url => {:controller => ‘comment’, :action =>
‘create’ } %>

<%= image_tag(url_for_file_column("comic", "imagen", "medium")) if @comic.imagen %>

<%= flash[:notice] %>

        <span id='ComicComentTitle'><%=l(:HOME_COMMENT_NEW) + " 

" + @comic.titulo + “”%></

        <p><span id='ComicCommentTituloCampo'><label 

for=“comment_nick”><%= l(:HOME_COMMENT_NICK) %> *
<%= text_field ‘comment’, ‘nick’, :class => ‘campoTexto’
%>

        <p><span id='ComicCommentTituloCampo'><%= 

l(:HOME_COMMENT_EMAIL) %> *
<%= text_field ‘comment’, ‘email’, :class => ‘campoTexto’
%>

        <p><span id='ComicCommentTituloCampo'><%= 

l(:HOME_COMMENT_URL) %>
<%= text_field ‘comment’, ‘url’, :class => ‘campoTexto’
%>

        <p><span id='ComicCommentTituloCampo'><%= 

l(:HOME_COMMENT_COMMENT) %> *
<%= text_area ‘comment’, ‘comment’, :cols => 50, :rows =>
10, :class => ‘campoArea’ %>

        <%= hidden_field 'comment', 'idComic', :value => @comic.id 

%>
 <%=
submit_tag l(:HOME_COMMENT_ADD), :class => ‘boton’ %>


<%= end_form_tag %>

A ver si alguie ve algo :smiley:
Gracias de antemano


LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com

Segun veo, estas haciendo error_messages_for de ‘comment’, pero no lo
pasas
como parametro al Controlador … solo estas pasando el id de comment,
que,
por cierto, no fue creado.

Saludos,
Silvio

El día 28/11/06, manu drac [email protected] escribió:

Hola.

La llamada que haces: form_remote_tag :update => ‘body_info’,
deberíaactualizar el div con id ‘body_info’ a la vuelta, pero no veo el div en
el código. Hay algo de código adicional?

En cualquier caso, para que se muestren los errores diría que el
<%=error_messages_for ‘comment’ %> debería ir dentro de la respuesta que
actualiza ese div. Si no, como haces la llamada con un método remote,
el resto de la página no se entera de que ha habido cambios y no
veráslos errores.

Saludos

manu drac
escribió:> Hola gente, me doy la bienvenida a mi mismo a esta lista :stuck_out_tongue: Espero poder

                    :message => l(:HOME_ERROR_COMMENT_CAMPO_VOID)

def new
flash[:notice] = l(:HOME_COMMENT_CREATED)

l(:HOME_COMMENT_URL) %>
submit_tag l(:HOME_COMMENT_ADD), :class => ‘boton’ %>


Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es


Andrés Cirugeda E.
ASPgems
Email: andres at aspgems dot com

‘All we have to decide is what to do with the time that is given to us’.
Gandalf.

Hola Andrés, el div que comentas está dentro del layout. Ese código no
lo pegué. Pero la funcion error_messages_for ‘comment’, como dices, la
tengo dentro de la vista, para que cuando hayan cambios se muestre el
error.

Investigaré ahora por donde me comentan en el otro mensage, tema del
id… :slight_smile:

Ta lueg!

Andrés Cirugeda E. [email protected] escribió: Hola.

La llamada que haces: form_remote_tag :update => ‘body_info’, debería
actualizar el div con id ‘body_info’ a la vuelta, pero no veo el div en
el código. Hay algo de código adicional?

En cualquier caso, para que se muestren los errores diría que el
<%=error_messages_for ‘comment’ %> debería ir dentro de la respuesta que
actualiza ese div. Si no, como haces la llamada con un método remote,
el resto de la página no se entera de que ha habido cambios y no verás
los errores.

Saludos

manu drac escribió:

me muestra los errores que me deberia mostrar la función

class CommentController < ApplicationController
@comment = Comment.new(params[:comment])
end
‘create’ } %>

        <%= image_tag(url_for_file_column("comic", "imagen",

“medium”)) if @comic.imagen %>

        <%= flash[:notice] %>
        <%=l(:HOME_COMMENT_NEW) + "

" + @comic.titulo + “”%>

for=“comment_nick”><%= l(:HOME_COMMENT_NICK) %> *
<%= text_field ‘comment’, ‘nick’, :class => ‘campoTexto’ %>

        <%=

l(:HOME_COMMENT_EMAIL) %> *
<%= text_field ‘comment’, ‘email’, :class => ‘campoTexto’
%>

        <%=

l(:HOME_COMMENT_URL) %>
<%= text_field ‘comment’, ‘url’, :class => ‘campoTexto’ %>

        <%=

l(:HOME_COMMENT_COMMENT) %> *
<%= text_area ‘comment’, ‘comment’, :cols => 50, :rows =>
10, :class => ‘campoArea’ %>

        <%= hidden_field 'comment', 'idComic', :value => @comic.id 

%>
<%=
submit_tag l(:HOME_COMMENT_ADD), :class => ‘boton’ %>

LLama Gratis a cualquier PC del Mundo.
http://lists.simplelogica.net/mailman/listinfo/ror-es

Andrés Cirugeda E.
ASPgems
Email: andres at aspgems dot com

‘All we have to decide is what to do with the time that is given to us’.
Gandalf.


Ror-es mailing list
[email protected]


LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com

Al final lo pude arreglar usando un render a un template en lugar del
render_component que estaba usando :stuck_out_tongue: A costado la verdad.

Aqui dejo el código final.

def create
@comment = Comment.new(params[:comment])
if @comment.save
flash[:notice] = l(:HOME_COMMENT_CREATED)
render_component(:controller => “comment”, :action => “new”,
:params => {:context => “tabs”, :idComic => @comment.idComic} )
else
@comic = Comic.find(params[:comment][:idComic])
render(:template => ‘comment/new’, :layout => false)
end
end

manu drac [email protected] escribió: Hola Andrés, el div que
comentas está dentro del layout. Ese código no lo pegué. Pero la funcion
error_messages_for ‘comment’, como dices, la tengo dentro de la vista,
para que cuando hayan cambios se muestre el error.

Investigaré ahora por donde me comentan en el otro mensage, tema del
id… :slight_smile:

Ta lueg!

Andrés Cirugeda E. [email protected] escribió: Hola.

La llamada que haces: form_remote_tag :update => ‘body_info’, debería
actualizar el div con id ‘body_info’ a la vuelta, pero no veo el div en
el código. Hay algo de código adicional?

En cualquier caso, para que se muestren los errores diría que el
<%=error_messages_for ‘comment’ %> debería ir dentro de la respuesta que
actualiza ese div. Si no, como haces la llamada con un método remote,
el resto de la página no se entera de que ha habido cambios y no verás
los errores.

Saludos

manu drac escribió:

me muestra los errores que me deberia mostrar la función

class CommentController < ApplicationController
@comment = Comment.new(params[:comment])
end
‘create’ } %>

        <%= image_tag(url_for_file_column("comic", "imagen",

“medium”)) if @comic.imagen %>

        <%= flash[:notice] %>
        <%=l(:HOME_COMMENT_NEW) + "

" + @comic.titulo + “”%>

for=“comment_nick”><%= l(:HOME_COMMENT_NICK) %> *
<%= text_field ‘comment’, ‘nick’, :class => ‘campoTexto’ %>

        <%=

l(:HOME_COMMENT_EMAIL) %> *
<%= text_field ‘comment’, ‘email’, :class => ‘campoTexto’
%>

        <%=

l(:HOME_COMMENT_URL) %>
<%= text_field ‘comment’, ‘url’, :class => ‘campoTexto’ %>

        <%=

l(:HOME_COMMENT_COMMENT) %> *
<%= text_area ‘comment’, ‘comment’, :cols => 50, :rows =>
10, :class => ‘campoArea’ %>

        <%= hidden_field 'comment', 'idComic', :value => @comic.id 

%>
<%=
submit_tag l(:HOME_COMMENT_ADD), :class => ‘boton’ %>

LLama Gratis a cualquier PC del Mundo.
http://lists.simplelogica.net/mailman/listinfo/ror-es

Andrés Cirugeda E.
ASPgems
Email: andres at aspgems dot com

‘All we have to decide is what to do with the time that is given to us’.
Gandalf.


Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es


LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com_______________________________________________
Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es


LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com