我刚刚开始使用rails,我认为我的问题与嵌套模型有关,但我不确定我做错了什么。
基本上,我正在尝试使用用户创建的帖子创建博客。作为一个典型的博客工作,我想在每个帖子中添加添加评论的功能。现在图像进入两个级别:1)我希望用户能够创建帖子,在帖子上他们将上传图像。现在,一旦创建了该帖子,我希望评论者能够在相应的帖子页面上添加评论并上传不同的图像。
我创建了包含帖子和评论的博客模型,没问题。我还添加了paperclip并创建了向帖子和评论添加“上传图片”选项的功能。但我只能将帖子图像显示在节目页面上(这是所有当前帖子的提要)和各个帖子页面本身。我尝试将图像添加到注释中,由于某种原因,我得到的路径不正确,导致“Missing_small”或错误的路径消息。
发布模型
class Post < ActiveRecord::Base
validates :name, :presence => true
validates :title, :presence => true,
:length => { :minimum => 5 }
has_many :comments, :dependent => :destroy
accepts_nested_attributes_for :comments
# Paperclip
has_attached_file :photo, :styles => { :small => "150x150>", :large => "360x360" },
:url => "/system/:class/:attachment/:id/:style_:basename.:extension",
:path => ":rails_root/public/system/:class/:attachment/:id/:style_:basename.:extension"
validates_attachment_presence :photo
validates_attachment_size :photo, :less_than => 5.megabytes
validates_attachment_content_type :photo, :content_type => ['image/jpeg', 'image/png']
end
评论模型
class Comment < ActiveRecord::Base
attr_accessor :photo_file_name, :photo_file_size, :photo_content_type
belongs_to :post
# Paperclip
has_attached_file :photo, :styles => { :small => "150x150>", :large => "360x360" },
:url => "/system/:class/:attachment/:id/:style_:basename.:extension",
:path => ":rails_root/public/system/:class/:attachment/:id/:style_:basename.:extension",
:default_url => '/images/missing_:style.png'
validates_attachment_presence :photo
validates_attachment_size :photo, :less_than => 5.megabytes
validates_attachment_content_type :photo, :content_type => ['image/jpeg', 'image/png']
end
帖子显示视图
<p id="notice"><%= notice %></p>
<p>
<% if @post.photo? %>
<%= image_tag @post.photo.url(:small) %>
<% else %>
No attachment available!
<% end %>
</p>
<p>
<b>Name:</b>
<%= @post.name %>
</p>
<p>
<b>Title:</b>
<%= @post.title %>
</p>
<p>
<b>Content:</b>
<%= @post.content %>
</p>
<h2>Comments</h2>
<%= render @post.comments %>
<h2>Add a comment:</h2>
<%= render "comments/form" %>
<br />
<%= link_to 'Edit', edit_post_path(@post) %> |
<%= link_to 'Back', posts_path %> |
评论视图
<p>
<%= image_tag comment.photo.url(:small) %>
</p>
<p>
<b>Commenter:</b>
<%= comment.commenter %>
</p>
<p>
<b>Comment:</b>
<%= comment.body %>
</p>
<p>
<%= link_to 'Destroy Comment', [comment.post, comment],
:confirm => "Are you sure?",
:method => :delete %>
</p>
如果您还需要其他任何帮助我,请告诉我。
提前致谢,我真的很感激。
答案 0 :(得分:0)
我希望评论者能够 添加评论并上传不同的 相应帖子上的图片
我不清楚您是否希望能够为单个帖子或评论上传多个图像。
为了给你这个选项,我会创建一个Photo模型,这就是具有回形针关联的。
class Photo < ActiveRecord::Base
belongs_to :post
has_attached_file :data
end
然后问题是这张照片如何属于评论和帖子?为此你可以使用多态关联。
这种tutorial类型可以满足您的需求(将产品替换为Post),但您必须使用多态关联对其进行扩展,以便它适用于评论和帖子。