2015-08-28 85 views
1

我的模型:属性不保存

class Group < ActiveRecord::Base 
    has_many :images, :dependent => :destroy 

    accepts_nested_attributes_for :images, :reject_if => lambda { |a| a[:pic].blank? }, :allow_destroy => true 
end 

class Image < ActiveRecord::Base 
    belongs_to :group 
    has_many :votes, :dependent => :destroy 

    has_attached_file :pic, styles: { medium: "300x300>", thumb: "100x100>" }, default_url: "/images/:style/missing.png" 
    validates_attachment_content_type :pic, content_type: /\Aimage\/.*\Z/ 
end 

我的组控制器:

def new 
    @group = Group.new 
    3.times {@group.images.build} 
end 

def create 
    @group = Group.new(group_params) 

    if @group.save 
     redirect_to groups_path 
    else 
     render 'new' 
    end 
end 

def group_params 
    params.require(:group).permit(:name) 
end 

我的形式:

<%= form_for @group, html: { multipart: true } do |f| %> 
    <%= f.label :name %> 
    <%= f.text_field :name %> 
    <%= f.fields_for :images do |builder| %> 
     <p> 
      <%= builder.label :pic %> 
      <%= builder.file_field :pic %> 
     </p> 
    <% end %> 
    <%= f.submit %> 
<% end %> 

所以问题是,当我提交表单时,组创建没有问题。我可以在数据库中找到该组,访问组属性(组的名称),但没有图像保存到数据库。我也没有收到任何错误,所以我不确定发生了什么。有什么我失踪?

注:我使用回形针宝石在你的group_params文件

回答

2
def group_params 
    params.require(:group).permit(:name, :images_attributes => [:pic]) 
end 

你必须重视许可证嵌套参数。

+0

我试过'params.require(:组).permit(:名称,:PIC)','params.require(:组).permit(:名称,:pic,:image)'和'params.require(:group).permit(:name,:image)',并且它们都没有影响 –

+0

它应该是':images_attributes => [:pic ]' – Emu

0

更新您的代码:

def group_params  
params.require(:group).permit(:name, :images_attributes => [:pic,:_destroy]) 
end