【发布时间】:2017-12-10 17:03:40
【问题描述】:
我有两个模型;产品和变化。变体形式嵌套在产品形式中。我还使用Shrine 文件附件gem 来处理上传。我的变体模型有一个名称和一个照片字段。当照片字段成为我产品模型的一部分时,效果很好;我可以上传、预览和删除。自从将其移入嵌套部分后,我的照片字段中出现了各种 undefined methods。但作为测试,我删除了嵌套部分中的所有内容,只添加了 file_field <%= f.file_field :photo_one %> 并将文件上传并保存到数据库中,所以我知道部分关联设置正确。
_form_html.erb
...
<h4>Variations</h4>
<div class="row">
<%= f.fields_for :variations do |variation| %>
<%= render 'variation_fields', :f => variation %>
<% end %>
</div>
<div class="row">
<div class="col-md-4">
<%= link_to_add_association 'add variation', f, :variations, :class => "btn btn--sm" %>
</div>
</div>
<div class="row">
<div class="col-md-4">
<%= submit_tag 'Submit', class: 'btn btn--sm' %>
</div>
</div>
...
_variation_field.html.erb
<div class="nested-fields">
<div class="row">
<div class="col-md-6">
<div class="col-md-6">
<%= f.label :name, 'Name' %>
<%= f.text_field :name %>
</div>
</div>
</div>
<div class="row">
<div class="col-md-4">
<%= f.label :photo_one, 'Photo One' %>
<% if :photo_one.present? %>
<div class="product-image">
<%= image_tag(@product.photo_one_url(:thumb)) %>
<div class="input-checkbox input-checkbox--switch">
<input name="product[remove_photo_one]" type="hidden" value="0">
<input id="checkbox-switch" type="checkbox" name="product[remove_photo_one]">
<label for="checkbox-switch"></label>
</div>
<span>Remove Image</span>
</div>
<% end %>
<%= f.hidden_field :photo_one, value: @product.cached_photo_one_data %>
<%= f.file_field :photo_one %>
</div>
</div>
</div>
model product.rb
class Product < ApplicationRecord
include ImageUploader[:spec_sheet]
has_many :categories
has_many :variations, dependent: :destroy
accepts_nested_attributes_for :variations, allow_destroy: true
accepts_nested_attributes_for :categories, allow_destroy: true
模型变化.rb
class Variation < ApplicationRecord
include ImageUploader[:photo_one]
belongs_to :product
end
products_controller.rb
...
def product_params
params.require(:product).permit(
...
variations_attributes: [
:id,
:name,
:position,
:photo_one,
:remove_photo_one,
:_destroy
],
)
end
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-5 ruby-on-rails-5.1