2011-04-13 44 views
0

我跟着教程here和一切都很好..直到我试图将attr_accessible添加到文章模型。提前致谢。 下面是相关的代码:attr_accessible与回形针多张图片上传

应用程序/模型/ user.rb

class User < ActiveRecord::Base 
    attr_accessible :name, :email 
    has_many :assets, :dependent => :destroy 
    accepts_nested_attributes_for :assets, :allow_destroy => true 
end 

应用程序/模型/ asset.rb

class Asset < ActiveRecord::Base 
    attr_accessible :user_id, :image 
    belongs_to :user 
    has_attached_file :image, 
    :styles => { 
     :thumb=> "100x100#", 
     :small => "300x300>", 
     :large => "600x600>" 
    } 
end 

DB/schema.rb

create_table "assets", :force => true do |t| 
    t.integer "user_id" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    t.string "image_file_name" 
    t.string "image_content_type" 
    t.integer "image_file_size" 
    end 

    create_table "users", :force => true do |t| 
    t.string "name" 
    t.string "email" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    end 

应用程序/视图/用户/ _form.html.erb

<%= form_for(@user, :html => { :multipart => true }) do |f| %> 
    <% if @user.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</h2> 

     <ul> 
     <% @user.errors.full_messages.each do |msg| %> 
     <li><%= msg %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 

    <div class="field"> 
    <%= f.label :name %><br /> 
    <%= f.text_field :name %> 
    </div> 
    <div class="field"> 
    <%= f.label :email %><br /> 
    <%= f.text_field :email %> 
    </div> 

    <div class="newPaperclipFiles"> 
    <%= f.fields_for :assets do |asset| %> 
     <% if asset.object.new_record? %> 
     <%= asset.file_field :image %> 
     <% end %> 
    <% end %> 
    </div> 

    <div class="existingPaperclipFiles"> 
    <% f.fields_for :assets do |asset| %> 
     <% unless asset.object.new_record? %> 
     <div class="thumbnail"> 
      <%= link_to(image_tag(asset.object.image.url(:thumb)), asset.object.image.url(:original)) %> 
      <%= asset.check_box :_destroy %> 
     </div> 
     <% end %> 
    <% end %> 
    </div> 

    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

回答

2

尝试不同的排列组合,并通过相关的帖子会后,终于抓住了那个一直逃避我这几天的gremblin。我所需要的只是将:assets_attributes添加到用户模型中的attr_accessible列表中。谢谢阅读!

attr_accesible for nested objects