Ayuda con formulario de comentarios

13 views
Skip to first unread message

Chr5

unread,
Jan 23, 2016, 11:18:11 AM1/23/16
to las-palma...@googlegroups.com
¿Sigue vivo este grupo?
Sería estupendo, por que he retomado Ror y la verdad es que a penas 
conozco a nadie que me pueda echar una mano.
Gracias a Imobach, intento implementar una nueva funcionalidad en un 
proyecto que tengo desde hace año estancado, se llama "comentarios".

Intento crear un formulario que sirva para escribir un comentario. Así 
de sencillo, pero no puedo.

En el archivo routes.rb

   resources :comments

#he añadido este código que he visto por internet....en un ejemplo 
parecido...
   resources :designs do
     resources :comments
   end

En el formulario de la vista del post (timeline/show.html.erb):

     <%= semantic_form_for ([@design, @design.comments.build]) do 
|formulario| %>  #Esto lo he sacado del mismo ejemplo de internet.... no 
acabo de entender.....
       <%= formulario.text_field :title %>
       <%= formulario.text_field :body %>
       <%= formulario.submit %>
     <% end %>


Archivo comments_controller.rb:

class CommentsController < ApplicationController

   def create
     @design = Design.find(params[:design_id])
     @user = current_user.id
     @comment = @design.comments.create(params[:comment])  #Haciendo 
esta llega el design_id, pero no el user_id.
     @comment = current_user.comments.create(params[:comment]) # Con 
esta línea, llega el user_id, pero no llega el design_id
     redirect_to timeline_path(@design)
   end
end


pd. Tampoco conozco la diferencia entre el método 
@design.comments.create() y el método @design.comments.new() pero 
alguien recomienda el último, lo probé y parece que no llega nada al a bbdd.

Cualquier tipo de ayuda u orientación lo agradezco,
Muchas gracias,
Carlos
car...@awwa.es

Ángel García Pérez

unread,
Jan 25, 2016, 5:54:05 AM1/25/16
to las-palma...@googlegroups.com
Buenas! La verdad es que este grupo lleva muerto mucho tiempo, pero nunca es tarde para resucitarlo.

Model.new() crea una instancia del modelo, pero no la guarda en la BD.
Model.create() crea la instancia y la guarda en la BD. (sería como Model.new().save)

Para que a la BD llegue el ID del usuario tienes que pasarselo. Hay dos formas posibles:

@comment = @design.comments.create(params[:comment].merge({user_id: current_user.id}))

o bien:

@comment = @design.comments.new(params[:comment])
@comment.user = @user
@comment.save

Con el save puedes controlar si se ha guardado correctamente, si el modelo tiene validaciones, etc.
Ya nos contarás que tal te ha ido!

--
Has recibido este mensaje porque estás suscrito al grupo "Las Palmas On Rails" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a las-palmas-on-r...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a las-palma...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/las-palmas-on-rails.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Atentamente:
Ángel García Pérez.

José Iván López González

unread,
Jan 25, 2016, 8:46:10 AM1/25/16
to las-palma...@googlegroups.com
Hola,

Pues sí, apoyo la idea de resucitarlo.

Aunque Ángel ya explicó muy bien una posible solución a tu problema, si te apetece puedes aprender más sobre Active Record y Associations con las rails guides [1] y [2].


Saludos

David

unread,
Jan 26, 2016, 5:51:51 AM1/26/16
to Las Palmas On Rails
Hola a todos!

Soy nuevo en el grupo. Hacía tiempo que buscaba un grupo ruby cerca de casa. Bueno vivo en Tenerife, pero más cerca está Gran Canaria que Madrid. jajaja
Sé que el tema del grupo es ruby on rails... Trabajo más con ruby que con rails... pero como este grupo es lo más cercano que he visto. Si a ustedes no les importa, participo.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a las-palmas-on-rails+unsub...@googlegroups.com.

Para publicar en este grupo, envía un correo electrónico a las-palma...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/las-palmas-on-rails.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
Atentamente:
Ángel García Pérez.

--
Has recibido este mensaje porque estás suscrito al grupo "Las Palmas On Rails" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a las-palmas-on-rails+unsub...@googlegroups.com.

Chr5

unread,
Jan 28, 2016, 6:23:44 PM1/28/16
to las-palma...@googlegroups.com
Uff !!! No saben la alegría que me dan !!!
La verdad es que lo resolví con el new:


@comment = @design.comments.new(params[:comment])
@comment.user = @user
@comment.save

Les agradezco mucho la ayuda, especialmente a ti Ángel.

Aprovecho para realizar otra consulta:

Ahora quiero dar la opción a ese usuario a borrar sus comentarios, tengo algo así en la vista:

<p><%= link_to "Eliminar post", design_comment_path(@design, comment), method: :delete %></p>

La primera duda la tengo aquí, necesito que cuando se borre se dirija a la misma vista que sería el show de diseño (/designs/show.html.erb)

Y esta es la acción (función destroy) del controlador Comments:
Advierto que lo he pillado por internet y no entiendo todo lo que he puesto...agradezco cualquier aclaración !

def destroy

@design = Design.find(params[:design_id])
    @comment = Comment.find(params[:id])

if @comment.user.id == current_user.id #comprobar que el usuario es dueño de su comentario antes de poderlo borrar....
@comment.destroy
else
flash.now[:danger] = "No puedes borrar este mensaje"
end

respond_to do |format|
format.html { redirect_to design_comments_path(@design) }
format.xml { head :ok }
end
* Parece que no funciona, sigo borrando todos los comentarios...no sólo los mios.....
* Por otro lado me redirige a una vista....pero no a la misma en la que estaba.....

gracias !!

Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a las-palmas-on-r...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a las-palma...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/las-palmas-on-rails.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
Atentamente:
Ángel García Pérez.

--
Has recibido este mensaje porque estás suscrito al grupo "Las Palmas On Rails" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a las-palmas-on-r...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a las-palma...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/las-palmas-on-rails.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
Has recibido este mensaje porque estás suscrito al grupo "Las Palmas On Rails" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a las-palmas-on-r...@googlegroups.com.

Fraire

unread,
Jan 29, 2016, 10:54:04 AM1/29/16
to las-palma...@googlegroups.com
Uff parece un proyecto muy viejo por el 'format.xml  { head :ok }', lo tienes subido a github o algo asi?, para echarle un vistazo. 
Reply all
Reply to author
Forward
0 new messages