tôi có một vài lớp mà mỗi thanh lại có nhận xét nào:Tạo biểu mẫu cho các hiệp hội đa hình trong Rails
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
Làm thế nào để tạo ra một hình thức cho một bộ phim bình luận mới? Tôi thêm
resources :movies do
resources :comments
end
để routes.rb của tôi, và cố gắng new_movie_comment_path (@movie), nhưng điều này mang lại cho tôi một hình thức có chứa commentable_id và commentable_type [mà tôi muốn trở nên thông dụng tự động, không được nhập bởi người sử dụng trực tiếp]. Tôi cũng đã cố gắng tạo ra các hình thức bản thân mình:
form_for [@movie, Comment.new] do |f|
f.text_field :text
f.submit
end
(nơi "văn bản" là một lĩnh vực trong bảng Comment) nhưng điều này không làm việc, hoặc.
Tôi thực sự không chắc chắn cách liên kết nhận xét với phim. Ví dụ,
c = Comment.create(:text => "This is a comment.", :commentable_id => 1, :commentable_type => "movie")
dường như không tạo ra một bình luận liên quan đến bộ phim với id 1. (Movie.find (1) .comments trả về một mảng trống.)
Làm cách nào để tạo biểu mẫu để nhập nhận xét? Tôi không nghĩ rằng tôi muốn "form_for @ movie.comments.create do | f | f.text_field: text; f.submit end", bởi vì tôi chỉ muốn tạo nhận xét nếu nó thực sự được gửi. Và vì lý do nào đó, @ movie.comments.build dường như không liên kết nhận xét với phim. – grautur
Bạn có thể thêm nút 'Thêm nhận xét' trên trang Trình diễn phim sẽ chuyển hướng bạn đến trang chỉnh sửa phim có thêm trường nhận xét. Điều này có thể được thực hiện như sau: – Rohit
<% form_for (@movie) do | f | %> <% = f.error_messages%>
<% = f.label: name%>
<% f.fields_for: ý kiến làm | v | %><% = f.text_field: name%>
<% = v.label: comment%> <% = v.text_area: comment%>
<% end %> <% end %> – Rohit