Эй, я пишу сайт, похожий на 4chan. У меня есть две модели: Board
и Picture
. A Board
имеет много Picture
s:
class Board < ActiveRecord::Base
# Relationships
has_many :pictures, :dependent => :destroy
end
class Picture < ActiveRecord::Base
# Relationships
belongs_to :board
end
Я делаю это, на мой взгляд boards/show.html.haml
:
- if @board.pictures.any?
- @board.pictures.each do |picture|
%article.picture-article{ :id => "picture-#{picture.id}" }
- if picture.title?
%header
%h2= picture.title
%img{ :src => picture.pic.url, :alt => (picture.title? ? picture.title : 'untitled pic') }/
%pre~ picture.description
- else
meh this board is still empty
А в моем милом BoardsController
:
def show
@board = Board.find_by_short_name params[:id]
end
Проблема в том, что всегда отображается один Picture
, который пуст. Например, у меня есть Board
без Picture
s в БД (проверил с помощью Picture.all
), но это вывод:
<code><article class='picture-article' id='picture-'>
<img alt='untitled pic' src='/pics/original/missing.png'>
<pre>
Однако, когда я отображаю его как JSON, вывод будет без Picture
s, как и должно быть:
{
"board": {
"name": "n00bs",
"created_at": "2011-03-16T17:14:32Z",
"updated_at": "2011-03-16T17:14:32Z",
"id": 14,
"short_name": "0",
"pictures": [
]
}
}
Я могу удалить это, просто удалив последний элемент массива перед выполнением each
, но ошибка все еще остается, и это очень неуклюже. Как это может случиться? Почему @board.pictures
всегда добавляет пустой Picture
объект?