【发布时间】:2014-02-11 15:46:35
【问题描述】:
为此,我已经用键盘敲打了大约一天。我有点菜鸟,但我做了一些研究,似乎无法找到解决这个问题的方法。
我正在使用 Rails 4.0.2、Ruby 2.0.0p0、Bootstrap 2.3.2、Jcrop 0.9.12、Rmagick 2.13.2
我正在尝试在我的应用中实现 Jcrop 并不断收到以下错误:
NoMethodError in PeopleController#update
undefined method `crop_x' for #<Person:0x007fc7a531d160>
我查看了有关实施 Jcrop 的 Railscast,看起来我做对了。
我还发现一些像this one 这样的页面说Jcrop 和Bootstrap 中的某些CSS 之间存在冲突问题。我尝试添加推荐的代码,但没有解决它。因此,我查看了 jquery.Jcrop.css 文件并注意到该修复程序已包含在内,因此我将其从我的 css 文件中删除。
这是我的 photoUploader.rb,其中有裁剪代码。我用**标记的行是页面尝试加载时突出显示错误的代码:
def crop
**if model.crop_x.present?**
resize_to_limit(600, 600)
manipulate! do |img|
x = model.crop_x.to_i
y = model.crop_y.to_i
w = model.crop_w.to_i
h = model.crop_h.to_i
img.crop!(x, y, w, h)
end
end
end
这是我用于更新记录的控制器:
def update
respond_to do |format|
if @person.update(person_params)
if params[:person][:photo].present?
render :crop
else
redirect_to @person, notice: "Successfully created person."
end
format.html { redirect_to @person, notice: 'Person was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: 'edit' }
format.json { render json: @person.errors, status: :unprocessable_entity }
end
end
end
这是我实现了强参数的控制器代码:
def person_params
params.require(:person).permit(:fname, :mname, :lname, :company, :department, :title, :manager, :direct_report, :ntid, :work_phone, :mobile, :email, :office, :address, :city, :state, :zipcode, :country, :suite, :column, :fax, :assistant, :photo, :crop_x, :crop_y, :crop_w, :crop_h)
end
这是我的 Person 模型中的相关代码:
mount_uploader :photo, PhotoUploader
after_update :crop_photo
def crop_photo
photo.recreate_versions! if crop_x.present?
end
我完全被难住了。非常感谢任何帮助。
【问题讨论】:
标签: jquery ruby-on-rails twitter-bootstrap rmagick jcrop