我有一個產品模型和一個圖像模型(基於回形針)。多態關聯和嵌套屬性
class Product < ActiveRecord::Base
has_many :images, as: :imageable,
dependent: :destroy
accepts_nested_attributes_for :images
end
class Image < ActiveRecord::Base
belongs_to :imageable, polymorphic: true
has_attached_file :picture
end
我要添加圖片爲我的產品我創建產品(/products/new
)在同一個頁面。這裏是形式:
<%= form_for(@product, html: { multipart: true}) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<div>
<%= f.label :name, t('product.name') %>
<%= f.text_field :name %>
</div>
<div class="file_field">
<%= f.fields_for :image do |images_form| %>
<%= images_form.file_field :image %>
<% end %>
</div>
<%= f.submit @submit_button %>
<% end %>
然後我去/products/new
頁,我填寫的字段,然後點擊提交按鈕。服務器嘗試呈現產品的展示頁面,但由於圖像尚未保存,因此無法使用。我有以下錯誤:
undefined method `picture' for nil:NilClass
在產品的展示頁面下面一行
image_tag(@product.images.first.picture.url(:medium))
我不知道爲什麼圖像沒有被保存,我看到了從服務器呈現以下消息:
Unpermitted parameters: images_attributes
所以我加入了許可證產品PARAMS圖像屬性(like there):
def product_params
params.require(:product).permit(:name, :sharable, :givable, image_attributes: [:name, :picture_file_name, :picture_content_type, :picture_file_size])
end
但它沒有改變任何東西,我總是有相同的錯誤信息。你知道權限問題來自哪裏嗎?
'params.require(:產品).permit(:名稱,:可共享,:givable,image_attributes:[:名稱,:picture_file_name,:picture_content_type,:picture_file_size])''params.require(:product).permit(:name,:sharable,:givable,:image)' –