2016-03-30 3 views
4

Im работает над простой функцией формы, которая добавляет изображение через вложенную форму.fields_for missing при попытке добавить accepts_nested_attributes_for

Фотомодель, на котором должны храниться все мои загруженные изображения.

class Photo < ActiveRecord::Base 

    belongs_to :posting 

    has_attached_file :image, styles: { large: "500x500>", medium: "300x300>", thumb: "100x100#" }, default_url: "/images/:style/missing.png" 
    validates_attachment_content_type :image, content_type: /\Aimage\/.*\Z/ 

end 

фрагмент моей вложенной форме (в форме)

<%= post.fields_for :photos, html: { multipart: true } do |photo| %> 
      <%= photo.label :image %> 
      <%= photo.file_field :image %> 
     <% end %> 

Все показывает хорошо, но когда я раскомментировать accepts_nested_attributes_for линию. Моя вложенная форма исчезает!

class Posting < ActiveRecord::Base 

    belongs_to :subcategory 
    belongs_to :category 

    has_many :photos 

    #accepts_nested_attributes_for :photos 
end 

ответ

2

Предполагаете, что вы назначили переменную экземпляра @post в новом действии PostsController. Вы должны добавить метод build_photo к новому действию:

def new 
    @post = Post.new 
    @post.build_photo 
end 

Это должно показать вашу вложенную форму, тоже.

+0

Спасибо! Вместо этого я использовал '@ post.posting.build', и он работал как шарм! – StormTrooper

2

Посмотреть Один-ко-многим пример в API Документов fields_for

непроверенная, но это должно быть ваше решение.

<% post.photos.each do |photo| %> 
<%= post.fields_for :photos, photo, html: { multipart: true } do |photo_fields| %> 
    <%= photo_fields.label :image %> 
    <%= photo_fields.file_field :image %> 
    <% end %> 
<% end %> 
+1

Я думаю, что это должно сработать, просто отсутствует запятая в списке args после 'photo' –

+0

хорошо замечена @FredWillmore. Я добавил. –

Смежные вопросы