2014-02-11 61 views
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 

我完全難住了。任何援助非常感謝。

回答

3

您在模型中應用attr_accessor這樣

attr_accessor :crop_x, :crop_y, :crop_w, :crop_h 
+0

我on Rails的4所以我添加這些到我的控制器,他們正在實現強勁的參數。 –

+1

@ScottS。 - 建議使用'attr_accessor',而不是'attr_accessible'。如果沒有這些參數名稱的後備列(例如'crop_x'),強參數是不夠的。試試這個建議併發回。 – PinnyM

+0

Doh!感謝PinnyM指出了兩者之間的差異。我現在得到了一個不同的錯誤:「PeopleController#update中的AbstractController :: DoubleRenderError。在此操作中多次調用渲染和/或重定向...」,我將開始調查。 –