У меня есть модель «Обновление», в которой есть «многие активы».Актив имеет has_attached_file
из: актива, используя Paperclip.
Я могу успешно создать несколько активов через форму обновления (используя fields_for
), но при редактировании обновления я не могу обновить дополнительное,не атрибут Paperclip, называемый "sort_order" в активе.Новые значения публикуются, но объект не обновляется.
models / asset.rb
...
belongs_to :update
...
models / update.rb
has_many :assets, :dependent => :destroy
...
accepts_nested_attributes_for :assets, :allow_destroy => true
Я не использую attr_accessible
ни для одной модели.
views / updates / _form.html.erb
<ul class="existing-images">
<%= f.fields_for :assets do |a| %>
<% unless a.object.new_record? %>
<li>
<%= link_to image_tag(a.object.asset.url(:small)), a.object.asset.url(:original) %>
<%= a.check_box :_destroy %>
<%= a.label :_destroy %>
<%= a.text_field :sort_order %>
<%= a.label :sort_order %>
</li>
<% end %>
<% end %>
</ul>
В приведенном выше поле a.text_field :sort_order
отображается сортировочный порядок по умолчанию для ресурса, но он не может быть обновлен.
Новые значения, введенные в это поле, отправляются согласно журналу:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"2IUei4WR7fRpsM0TKD3Yk8u5FlYv2FDszzjJc3y4eG8=", "update"=>{"year"=>"2011", "week"=>"39", "title"=>"A new piece of work", "content"=>"", "assets_attributes"=>{"3"=>{"_destroy"=>"0", "sort_order"=>"1", "id"=>"1"}, "4"=>{"_destroy"=>"0", **"sort_order"=>"20"**, "id"=>"2"}}, "video_url"=>"", "quote"=>"", "allow_reactions"=>"1", "is_published"=>"1", "allow_public_feed"=>"0"}, "id"=>"1"}
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1
Update Load (0.2ms) SELECT "updates".* FROM "updates" WHERE "updates"."id" = ? LIMIT 1 [["id", "1"]]
Asset Load (0.4ms) SELECT "assets".* FROM "assets" WHERE "assets"."update_id" = 1 AND "assets"."id" IN (1, 2) ORDER BY assets.sort_order
(0.1ms) SELECT 1 FROM "updates" WHERE ("updates"."update_type_id" = 1 AND "updates"."id" != 1 AND "updates"."year" = 2011 AND "updates"."week" = 39 AND "updates"."user_id" = 1) LIMIT 1
Update Load (0.1ms) SELECT "updates".* FROM "updates" WHERE "updates"."id" = 1 LIMIT 1
[paperclip] Saving attachments.
("sort_order" => "20" - новое значение), но значение не сохраняется.
Это также несмотря на то, что флажок _destroy работает должным образом.
Надеюсь, этого достаточно информации;если кто-нибудь может помочь, я был бы так благодарен !!