【发布时间】:2014-05-16 18:34:45
【问题描述】:
我正在使用 Papercrop gem 来裁剪我的缩略图。它在我的用户控制器上的其他地方工作得很好,但是我试图用 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"}
以及随之而来的错误:
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
项目.rb
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 由 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 around 改变了我的错误,现在唯一不允许的参数是“image”
<%= 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 %>
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4