Me doy cuenta de que esta es probablemente una pregunta muy básica, pero he pasado días volviendo a ella ahora y por alguna razón Google simplemente no me está ayudando. (Creo que parte del problema es que soy un principiante, no estoy seguro de qué preguntar ...) También busqué en Ruby Cookbook de O'Reilly y la API de Rails, pero todavía estoy atascado en este tema . Encontré algo de información sobre las relaciones polimórficas, pero no parecía que fuera eso lo que necesitaba (aunque dígame si estaba equivocado).Pregunta de Easy Ruby on Rails: ¿cómo adjuntar comentarios a usuarios y artículos?
Estoy tratando de modificar Michael Hartl's tutorial para crear una aplicación de blog con usuarios, artículos y comentarios (sin usar andamios). Quiero que los comentarios pertenezcan tanto a un usuario como a un artículo.
Mi problema principal es: No puedo encontrar la forma de obtener la identificación del artículo actual en el controlador de comentarios.
Las relaciones de la clase User:
class User < ActiveRecord::Base
has_many :articles
has_many :comments, :dependent => :destroy
Las relaciones de la clase de artículo:
class Article < ActiveRecord::Base
belongs_to :user
has_many :comments, :dependent => :destroy
Las relaciones de la clase Comentario:
class Comment < ActiveRecord::Base
belongs_to :user
belongs_to :article
Ésta es mi CommentsController (la página about se renderiza en el else solo para hacerlo obvio nos a mí por el momento):
class CommentsController < ApplicationController
before_filter :authenticate, :only => [:create, :destroy]
def new
@comment = Comment.new
end
def create
@article = Article.find(params[:id])
@comment = current_user.comments.build(params[:comment])
@comment.article_id = @article.id
if @comment.save
flash[:success] = "Comment created!"
redirect_to '/contact'
else
render '/about'
end
end
def destroy
end
end
Cuando registro como usuario y tratar de crear un comentario en un artículo, me sale "No se pudo encontrar el artículo sin un ID." No puedo encontrar la forma de obtener la identificación del artículo actual en el controlador de comentarios.
Gracias y avíseme si necesita que publique más código.
Editar: Aquí está mi _comment_form.html.erb parcial que llamo en la parte inferior de mi vista show.html.erb para el artículo:
<%= form_for ([@article, @article.comments.build]) do |f| %>
<div class="field">
<%= f.text_area :content %>
</div>
<div class="actions">
<%= f.submit "Submit" %>
</div>
<% end %>
También en este caso es el de show.html.erb el artículo:
<heading>
<h1><%= @article.heading %></h1>
<p>Posted <%= time_ago_in_words(@article.created_at) %> ago by <%= @article.user.name %></p>
</heading>
<p><%= @article.content %></p>
<footer><p>
<% unless @article.comments.empty? %>
<%= @article.comments.count %>
<% end %> comments</p></footer>
<% unless @article.comments.empty? %>
<%= render @comments %>
<%= will_paginate @comments %>
<% end %>
<%= render 'shared/comment_form' %>
puede pasar su código, es decir, su vista que tiene forma de crear comentario –
Publique su declaración de formulario de comentario, por favor. – raidfive
Además, para probar mejor sus asociaciones, intente utilizar la consola de Rails. ¡Es un regalo del cielo para tales cosas! –