저는 레일에 비교적 익숙하지 않아 루비 클래스의 특성과 범위 및 생성되는 객체에 대한 명확한 이해가 부족하여 제 문제가 부분적으로 발생할 수 있다고 생각합니다. 사진 기록의 작성 후Nil 용 호출 ID - 인스턴스 메소드
Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id
Rails.root: /Users/rmcnairn/rails/search
Application Trace | Framework Trace | Full Trace
app/models/photo.rb:17:in `scanner'
app/controllers/suppliers_controller.rb:66:in `block in update'
app/controllers/suppliers_controller.rb:65:in `update'
:
나는 다음과 같은 오류를 얻고있다. 이 새 레코드를 사용하여 연결된 레코드 (Fabric)를 참조하고 해당 레코드에서 인스턴스 메서드 (Scan)를 호출하고 싶습니다. 스캔은 패브릭 클래스에서 정의됩니다.
내 기록이 설정되어 있는지 그래서 사진 * has_many * 직물 : Fabric_Photos
이 내 사진 클래스의 스냅 샷이며,이 협회를 찾아 전화를 내 시도를 통해 스캔 방법.
class Photo < ActiveRecord::Base
has_many :fabrics, :through => :fabric_photos
has_many :fabric_photos
after_create :scanner
accepts_nested_attributes_for :fabrics
mount_uploader :image, ImageUploader
def scanner
if self.fabric == true #fabric is a boolean column in the Photo table
self.fabrics.first.scan
else
return
end
end
end
편집 나는 직물 많은 사진
을 가지고 공급자는 직물을 have_many 관련 공급 업체 컨트롤러 코드를 추가 한def update
@supplier = Supplier.find(params[:id])
respond_to do |format| # line 65
if @supplier.update_attributes(params[:supplier])
format.html { redirect_to suppliers_url, notice: @supplier.name.to_s + ' was updated' }
format.json { head :no_content }
else
format.html { render action: "edit", notice: @supplier.name.to_s + ' was NOT updated' }
format.json { render json: @supplier.errors, status: :unprocessable_entity }
end
end
end
당신이 날의 성격에 대해 좀 더 이해할 수 있도록하는 것이 가능할 것이다 다른 클래스의 메서드를 호출 할 때 호출되는 관련 객체 및 제한 사항입니다.
나는
self.fabrics.first
가 호출 .scan 방법을 가지고 수없는 무언가를 반환하는 것을 가정한다. 액티브 레코드가 실제로 제작 한 내용을 누군가가 나에게 설명해주는 것이 좋을 것입니다.
많은 감사
스택 트레이스를 붙여 넣었고 그 안에 참조 된 컨트롤러가 게시되지 않았습니다 ... 항상 스택 추적에서 관련 코드를 게시하여 더 나은 답변을 얻으십시오 :) – Draiken
컨트롤러 코드가 추가되었습니다! :) – RMcNairn