#paperclip #attr-accessible
#скрепка #attr-доступен
Вопрос:
Я следовал приведенному здесь руководству, и все получилось прекрасно.. пока я не попытался добавить attr_accessible в модель article. Заранее спасибо. Вот соответствующий код:
приложение / модели/user.rb
class User < ActiveRecord::Base
attr_accessible :name, :email
has_many :assets, :dependent => :destroy
accepts_nested_attributes_for :assets, :allow_destroy => true
end
app/models/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 %>
Ответ №1:
Попробовав различные перестановки и просмотрев связанные сообщения, я, наконец, поймал гремблина, который ускользал от меня последние несколько дней. Все, что мне нужно, это добавить :assets_attributes в список attr_accessible в пользовательской модели. Спасибо за чтение!