0
我一直在敲擊我的頭對着鍵盤大約一天。我有點小事,但我已經做了一些研究,似乎無法找到解決方案。Rails,Jcrop,Rmagick,Bootstrap - 沒有方法錯誤
我使用Rails 4.0.2,紅寶石2.0.0p0,引導2.3.2,Jcrop 0.9.12,Rmagick 2.13.2
我試圖實現Jcrop在我的應用程序,並不斷收到以下錯誤:
NoMethodError in PeopleController#update
undefined method `crop_x' for #<Person:0x007fc7a531d160>
我已經看過了Railscast上實現Jcrop它看起來像我的事情吧。
我也發現一些頁面,如this one,說Jcrop和Bootstrap中的某些CSS之間存在衝突問題。我試着添加推薦的代碼,但沒有解決它。所以我看着jquery.Jcrop.css文件,發現修復已經包含在內,所以我將它從我的css文件中刪除。
這裏是我的照片上傳器.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
這裏是我一個人的模型的相關代碼:
mount_uploader :photo, PhotoUploader
after_update :crop_photo
def crop_photo
photo.recreate_versions! if crop_x.present?
end
我完全難住了。任何援助非常感謝。
我on Rails的4所以我添加這些到我的控制器,他們正在實現強勁的參數。 –
@ScottS。 - 建議使用'attr_accessor',而不是'attr_accessible'。如果沒有這些參數名稱的後備列(例如'crop_x'),強參數是不夠的。試試這個建議併發回。 – PinnyM
Doh!感謝PinnyM指出了兩者之間的差異。我現在得到了一個不同的錯誤:「PeopleController#update中的AbstractController :: DoubleRenderError。在此操作中多次調用渲染和/或重定向...」,我將開始調查。 –