Я только начинаю в рельсах и думаю, что мой вопрос связан с вложенными моделями, но я не уверен, что делаю неправильно.
По сути, я пытаюсь создать блог с сообщениями, созданными пользователями.Как работает типичный блог, в каждом посте я хочу добавить функциональность добавления комментариев.Теперь изображения вступают в игру на двух уровнях: 1) Я хочу, чтобы пользователи могли создавать сообщения, и на пост они будут загружать изображения.Теперь, когда этот пост создан, я хочу, чтобы комментаторы могли добавлять комментарии и загружать различные изображения на соответствующей странице поста.
Я создал модель блога с постами и комментариями, без проблем.Я также добавил скрепку и создал функциональность, чтобы добавить опцию «загрузить изображение» в сообщения и комментарии.Но я только смог заставить изображения постов появляться на странице показа (которая является фидом всех текущих постов) и на страницах отдельных постов.Я пытаюсь добавить изображения в комментарии, и по какой-то причине я получаю неправильный путь, что приводит к сообщению "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>
Дайте мне знать, если вам понадобится что-нибудь еще, чтобы помочь мне.
Заранее спасибо, я действительно ценю это.