我有两个模型:
class Article < ActiveRecord::Base
belongs_to :league
has_many :photos, :dependent => :destroy
attr_accessible :content, :lead, :title, :title_slug,
:created_at, :updated_at,
:league_id, :photos_attributes
accepts_nested_attributes_for :photos
validates :content, :league, :presence => true
validates :lead , :length => {maximum: 1000}, :presence => true
validates :title ,:length => {maximum: 200}, :presence => true
validates_associated :photos
和
class Photo < ActiveRecord::Base
belongs_to :article
attr_accessible :photo
validates :photo, presence: true
has_attached_file :photo , :styles => { :medium => '440x312#', :small => '209x105!'}
end
我的 ArticlesController 是
...
def new
@article = Article.new
@article.photos.build
end
def create
@article = Article.new(params[:article])
if @article.save
redirect_to([:admin,@article])
else
render 'new'
end
end
...
表单视图是:
= form_for([:admin,@article] , :html => {:multipart => true}) do |f|
- if @article.errors.any?
= render 'errors'
= f.fields_for :photos do |builder|
= builder.label :photo
= builder.file_field :photo
...
我对此有一些疑问:
1)我不想保存没有空照片的文章,但现在当我不选择文件时,我的文章会保存。
2)当我在文章的字段上出现一些错误并呈现“新”时,我的照片字段消失了,解决它的 Rails 方法是什么。
3)将来我想添加另一个模型:photo_type并将其与照片相关联。每篇文章将有两个照片字段,每个字段都有自己的类型(例如:小、大)。我想知道如何渲染该字段以及如何保存带有两张不同类型照片的文章。