0

У меня есть простая модель статьи, связанная с моделью изображения. В настоящее время отношения взаимно однозначны (может измениться позже, но сейчас это нормально).Rails: Принять дополнительное вложенное изображение; позвольте добавить позже, если nil

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

Однако, я не уверен, как справиться с этим путем действия редактирования. Я попытался это:

def edit 
    @article = Article.find(params[:id]) 
    if @article.image.nil? 
     @article.image = Image.new 
    end 
    render 'articles/edit' 
    end 

... что приводит:

ActiveRecord :: RecordNotSaved в Администратор :: ArticlesController # редактировать

Failed, чтобы сохранить новое ассоциированное изображение.

форма в настоящее время выглядит следующим образом:

<%= f.fields_for :image do |image| %> 
    <div class="form-group"> 
     <%= image.label :image, "Article image" %><br/> 
     <%= image_tag(@article.image.path.thumb.url) %> 
     <%= image.file_field :path %> 
    </div> 

    <div class="form-group"> 
     <%= image.label :caption %> 
     <%= image.text_field :caption, class: 'form-control' %> 
    </div> 

    <div class="form-group"> 
     <%= image.label :credits %> 
     <%= image.text_field :credits, class: 'form-control' %> 
    </div> 
    <% end %> 

Как я могу выполнить дополнительные вложенные изображения, которые могут быть добавлены через форму редактирования позже?

Спасибо!

ответ

0

Простота Rails никогда не перестает удивлять меня. Вот как я решил, добавив одну строку (@image = ...):

def edit 
    @article = Article.find(params[:id]) 
    @image = @article.image || @article.build_image 
    render 'articles/edit' 
    end 

... вдохновленный Can't update my nested model form for has_one association