私は2つのモデルを持っています:
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)記事のフィールドにエラーがあり、「新規」をレンダリングすると、写真フィールドが消えます。それを解決するレールの方法は何ですか。
3) 将来的には別のモデルを追加したいと思います: photo_type を写真に関連付けます。各記事には 2 つの写真フィールドがあり、それぞれに独自のタイプ (例: 小、大) があります。そのフィールドをレンダリングする方法と、タイプの異なる 2 つの写真を含む記事を保存するにはどうすればよいでしょうか。