que tienen un par de clases que pueden tener cada uno de observaciones:formas Creación de asociaciones polimórficas en los carriles
class Movie < ActiveRecord::Base
has_many :comments, :as => :commentable
end
class Actor < ActiveRecord::Base
has_many :comments, :as => :commentable
end
class Comment < ActiveRecord::Base
belongs_to :commentable, :polymorphic => true
end
¿Cómo se crea un formulario para una nueva película-comentario? Añadí
resources :movies do
resources :comments
end
a mi routes.rb, y trató new_movie_comment_path (@movie), pero esto me da un formulario que contiene commentable_id y commentable_type [lo que yo quiero a poblarse de forma automática, no entró por el usuario directamente]. También intenté crear la forma yo:
form_for [@movie, Comment.new] do |f|
f.text_field :text
f.submit
end
(donde "texto" es un campo de la tabla comentario) pero esto no funciona bien.
No estoy seguro de cómo asociar un comentario con una película. Por ejemplo,
c = Comment.create(:text => "This is a comment.", :commentable_id => 1, :commentable_type => "movie")
no parece crear un comentario asociado a la película con id 1. (Movie.find (1) .comments devuelve una matriz vacía.)
¿Cómo construyo un formulario para ingresar el comentario? No creo que quiera "form_for @ movie.comments.create do | f | f.text_field: text; f.submit end", porque solo quiero crear el comentario si realmente se envió. Y, por alguna razón, @ movie.comments.build no parece asociar el comentario con la película. – grautur
Puede agregar un botón 'Agregar comentario' en la página de la película que lo redirigirá a la página de edición de la película con el campo de comentarios agregado. Esto se puede hacer de la siguiente manera: – Rohit
<% form_for (@movie) do | f | %> <% =% f.error_messages>
<% = f.label: Nombre%>
<% f.fields_for: hacer comentarios | v | %><% = f.text_field: Nombre%>
<% = v.label: Comentario%> <% = v.text_area: Comentario%>
<% end %> <% end %> – Rohit