1

Я стараюсь, чтобы у меня была простая ассоциация «один-ко-многим». Я пытаюсь обновить фотографии, которые принадлежат к альбому через вложенную форму:accepts_nested_attributes_for в сочетании с formtastic и paperclip

Редактирование формы для фотоальбома:

<%= semantic_form_for(@album, :url => user_album_path(@user, @album), :html => {:method => :put}) do |f| %> 
<%= f.inputs do %> 
    <%= f.input :title %> 
    <%= f.input :description %> 
<% end %> 
<%= f.inputs :for => :photos do |builder|%> 
    <%= builder.input :_destroy, :as => :boolean %> 
<% end %> 
<%= f.submit "Submit", :disabled_with => 'Submiting...' %> 
<% end %> 

Он работает и не работает в то же время. Очевидно, что нет никаких проблем с названием и описанием, а formtastic правильно делает флажок для каждой фотографии в альбоме. Но здесь у меня есть первый вопрос:

1) Как я могу отобразить фотографию рядом с флажком? мне удалось решить это сам:

<%= image_tag(builder.object.image.url(:album)) %> 

Потазывает изображение.

Вот альбом и альбом модель:

class Album < ActiveRecord::Base 

    belongs_to   :user 
    has_many   :photos, :dependent => :destroy 

    #attr_accessible  :title, :description 

    validates_presence_of :title, :description 

    accepts_nested_attributes_for :photos, :allow_destroy => true 
end 

И модель фото:

class Photo < ActiveRecord::Base 
    belongs_to  :user 
    belongs_to  :album 

    has_attached_file :image, :styles => { :original => ["441x800>", :png], 
             :album => ["140x140#", :png], 
             :tiny => ["16x16#", :png] } 

    validates_attachment_presence :image 
    validates_attachment_content_type :image, :content_type => ["image/jpeg", "image/png", "image/gif"] 
end 

Контроллер альбома:

def update 
    @user = User.find(params[:user_id]) 
    @album = @user.albums.find(params[:id]) 
    if @album.update_attributes(params[:album][:photos_attributes]) 
     flash[:success] = t('users.flash.album_updated') 
     redirect_to @user 
    else 
     render :edit 
    end 
end 

Ошибка выброшен:

ActiveRecord::UnknownAttributeError in AlbumsController#update 

unknown attribute: 0 
Rails.root: /Users/stefanohug/orangerie 

Application Trace | Framework Trace | Full Trace 
app/controllers/albums_controller.rb:50:in `update' 
Request 

Parameters: 

{"_snowman"=>"☃", 
"_method"=>"put", 
"authenticity_token"=>"bE4AidmbaVoG9XBqolCxheyWtd7qeltkIpMRgd8c4Fw=", 
"album"=>{"title"=>"lol", 
"description"=>"hihi", 
"photos_attributes"=>{"0"=>{"_destroy"=>"1", 
"id"=>"72"}, 
"1"=>{"_destroy"=>"1", 
"id"=>"73"}, 

Строка 50 соответствует строке update_attributes.

Спасибо вам за помощь.

Stef

ответ

3

Я нашел ошибку. Это было в контроллере:

@album.update_attributes(params[:album][:photos_attributes]) 

следует читать:

@album.update_attributes(params[:album]) 

ДУХ ...: D

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