2
我正在使用Papercrop gem裁剪縮略圖圖像。它可以在我的用戶控制器上的其他地方正常工作,但是我試圖用has_one:through關係進行裁剪,並且嵌套窗體不會彈球。使用嵌套屬性和has_one:through關係的「未經許可的參數」
一些示例參數:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"t3BsHf6nxAhM9zcRUJfy3nMoLVQAJF/KLbWwqrxeYuk=", "project"=>{"uploaded_image_original_w"=>"960.0", "uploaded_image_original_h"=>"640.0", "uploaded_image_box_w"=>"500", "uploaded_image_crop_x"=>"330", "uploaded_image_crop_y"=>"0", "uploaded_image_crop_w"=>"607", "uploaded_image_crop_h"=>"607", "uploaded_image_aspect"=>"1.0"}, "commit"=>"Save", "profile_name"=>"Benji", "id"=>"1"}
而且隨之而來的錯誤:
class Project < ActiveRecord::Base
belongs_to :user
has_one :thumbnail, :dependent => :destroy
has_one :image, through: :thumbnail
accepts_nested_attributes_for :image
end
projects_controller.rb(該image_attribute attr_accessors被做
Unpermitted parameters: uploaded_image_original_w, uploaded_image_original_h, uploaded_image_box_w, uploaded_image_crop_x, uploaded_image_crop_y, uploaded_image_crop_w, uploaded_image_crop_h, uploaded_image_aspect
Project.rb The Papercrop gem)
def crop_params
params.require(:project).permit(image_attributes: [:uploaded_image_original_w, :uploaded_image_original_h,
:uploaded_image_box_w, :uploaded_image_crop_x,
:uploaded_image_crop_y, :uploaded_image_crop_w,
:uploaded_image_crop_h, :uploaded_image_aspect])
end
爲什麼它不允許這些屬性?
編輯:
添加fields_for周圍改變了我的錯誤,現在唯一不允許的參數是 「圖像」
<%= form_for(@project.thumbnail.image, :as => :project,:url => project_thumbnail_path(@user, @project)) do |f| %>
<%= f.fields_for :image, @project.thumbnail.image do |pf| %>
<%= pf.cropbox :uploaded_image, :width => 500 %>
<%= pf.crop_preview :uploaded_image, :width => 150 %>
<%= pf.submit 'Save' %>
<% end %>
<% end %>
嘿,感謝您的幫助。這裏是我的表單 - <%= form_for(@ project.thumbnail.image,as =>:project,:url => project_thumbnail_path(@user,@project))do | f | %> <%= f.cropbox:uploaded_image,:width => 500%> <%= f.crop_preview:uploaded_image,:width => 150%> <%= f.submit'Save'%> <% end %> '我認爲需要保持內部的strong_params,因爲attr_accessors在圖像模型中。 – BeamJinn
另外我試圖在fields_for標籤中包裝字段給了我一個未定義的nil:NilClass錯誤方法,因爲它不再引用附件了。 – BeamJinn
是的,'f.fields_for'需要您在嘗試使用之前構建嵌套對象。嘗試將@ project.thumbnail.image.build放入你的'new'方法 - 修復一些東西后,我會在一分鐘後看到更好的效果 –