2015-08-28 111 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