2011-11-24 1 views
0

UPDATEИспользуя скрепку в вложенной форме: отклонить, если неправильно

Если я удалить reject_if из строки:

accepts_nested_attributes_for :image_blogs, :reject_if => lambda { |t| t['image_blog'].nil? } 

Он работает, как он может быть модифицирован для работы по назначению и предотвратить изображение создание при ноль?


Я использую следующий учебник, чтобы создать сообщение с изображениями: http://sleekd.com/general/adding-multiple-images-to-a-rails-model-with-paperclip/ Цель состоит в том, чтобы иметь почтовый элемент, содержащий 0-н изображений блога. Блог изображений - это модель, содержащая скрепку. Я пытаюсь создать элементы image_blog в то же время, что и сообщение. Для этого я использую вложенные формы.

class PostsController < ApplicationController 

def new 
    @post = Post.new 
    3.times{ @post.image_blogs.build} 
    respond_to do |format| 
     format.html # new.html.erb 
     format.xml { render :xml => @post } 
    end 
    end 
end 

-

class ImageBlog < ActiveRecord::Base 
    belongs_to :post 
    attr_accessible :image 
    has_attached_file :image , :styles => { :small => "150x150>", :large => "320x240>" } 
end 

-

class Post < ActiveRecord::Base 
    has_many :image_blogs, :dependent => :destroy 
    validates :title, :content, :presence => true 
    validates :title, :uniqueness => true 
    acts_as_taggable 
    has_attached_file :image 
    accepts_nested_attributes_for :image_blogs, :reject_if => lambda { |t| t['image_blog'].nil? } 
end 

-

<%= form_for(@post,:html => { :multipart => true }) do |f| %> 
     <div class="field"> 
     <%= f.label :title %><br /> 
     <%= f.text_field :title %> 
     </div> 
     <div class="field"> 
     <%= f.label :content %><br /> 
     <%= f.text_area :content, :class => "mceEditor" %> 
     </div> 
     <%= f.fields_for :image_blogs, do |ib|%> 
     <p> 
     <%= ib.label "Image du post"%> 
     <%= ib.file_field :image %> 
     <%#= ib.check_box :_destroy%> 
     <%#= ib.label :_destroy,"Effacer l'image" %> 
     </p> 
     <% end %> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

Я проверил, что все было правильно, используя различные учебные пособия по вложенной скрепкой, но он по-прежнему не работает , Сообщение создается, но изображения не копируются и элементы изображения не создаются.

Почему нет ошибок? почему он не работает?

ответ

3

Я считаю, что вы должны сделать небольшую коррекцию на accepts_nested_attributes_for, внутри лямбда, объект вы оцениваете это изображение (атрибут ImageBlog) вместо image_blog, таким образом:

accepts_nested_attributes_for :image_blogs, :reject_if => lambda { |t| t['image'].nil? }