好吧大家這是一個複雜的設置,所以如果我需要澄清問題只是讓我知道。阿賈克斯,多個附件和回形針問題
我有一個模型:
class IconSet < ActiveRecord::Base
has_many :icon_graphics
end
這種模式有許多icongraphics:
class IconGraphic < ActiveRecord::Base
belongs_to :icon_set
has_attached_file :icon
has_attached_file :flagged
end
正如你所看到的,IconGraphic有兩個附加的文件,基本上有兩種不同的版本,我想的圖標加載。
現在,如果我單獨編輯icongraphic的話,此設置工作正常,但是,爲了便於使用,我在IconSet下可編輯所有圖標圖形。當您編輯圖標設置形式加載的部分爲icongraphics:
<% form_for @icon_set, :html => {:class => 'nice', :multipart => true} do |f| %>
<fieldset>
<%= f.error_messages %>
<p>
<%= f.label :name %>
<%= f.text_field :name, :class => "text_input" %>
</p>
<!-- Loaded Partial for icongraphics -->
<div id="icon_graphics">
<%= render :partial => 'icon_graphic', :collection => @icon_set.icon_graphics %>
</div>
<div class="add_link">
<%= link_to_function "Add an Icon" do |page|
page.insert_html :bottom, :icon_graphics, :partial => 'icon_graphic', :object => IconGraphic.new
end %>
</div>
<p><%= f.submit "Submit" %></p>
</fieldset>
<% end %>
這在很大程度上是基於關閉瑞安的Complex Forms Railscast的。
的部分負荷的是,file_field形式:
<div class="icon_graphic">
<% fields_for "icon_set[icon_graphic_attributes][]", icon_graphic do |icon_form|-%>
<%- if icon_graphic.new_record? -%>
<strong>Upload Icon: </strong><%= icon_form.file_field :icon, :index => nil %><br/>
<strong>Upload Flagged Icon: </strong><%= icon_form.file_field :flagged, :index => nil %>
<%= link_to_function image_tag('remove_16.png'), "this.up('.icon_graphic').remove()"%><br/>
<% else -%>
<%= image_tag icon_graphic.icon.url %><br/>
<strong>Replace <%= icon_graphic.icon_file_name %>: </strong><%= icon_form.file_field :icon, :index => nil %><br />
<% if icon_graphic.flagged_file_name.blank? -%>
<strong>Upload Flagged Icon: </strong><%= icon_form.file_field :flagged, :index => nil %>
<% else -%>
<strong>Replace <%= icon_graphic.flagged_file_name %>: </strong><%= icon_form.file_field :flagged, :index => nil %>
<%= icon_form.hidden_field :flagged, :index => nil %>
<% end -%>
<%= link_to_function image_tag('remove_16.png'), "mark_for_destroy(this, '.icon_graphic')"%><br/>
<%= icon_form.hidden_field :id, :index => nil %>
<%= icon_form.hidden_field :icon, :index => nil %>
<%= icon_form.hidden_field :should_destroy, :index => nil, :class => 'should_destroy' %>
<br/><br/>
<%- end -%>
<% end -%>
</div>
現在,這是當我添加新的圖標,並填寫這兩個領域看起來很不錯。但是,如果我在事後編輯IconSet,並嘗試用新的圖標替換圖標,或者如果我只上載了一個集並嘗試添加第二個附件,則回形針不會將附件向右IconGraphic模型。
看來,即使我有IconGraphic ID中的每個部分,
<%= icon_form.hidden_field :id, :index => nil %>
似乎回形針或者創建一個新的IconGraphic或將其連接到了錯誤的。
這一切都發生在您保存IconSet時,它被設置爲保存IconGraphic屬性。
我知道這很複雜..我可能只需要單獨編輯每個圖標,但如果任何人都可以提供幫助,我將不勝感激。