2016-12-16 1 views
0

에 내가 푸와 바 모델을 가지고가 속한 carrierwave 업 로더

  • belongs_to
  • has_one
  • 내가 carrierwave 업 로더에 bar_id을 얻고 싶은

하지만, 그것은 항상 nil 값입니다. 나는 초기화

class FooUploader < CarrierWave::Uploader::Base 

    def initialize(*) 
    super 
    binding.pry # debug here 
    end 

end 

들어 올립니다 화면에서 디버깅을 할 때 디버그 :

[1] pry(#<FooUploader>)> model 
=> #<Foo _id: 585347a5fe37a81f4773b3ac, created_at: nil, updated_at: nil, picture_filename: nil, bar_id: nil, name: "test", slug: "test", description: "test"> 

내가 bar_id 값이 나는 두 가지 방법이 시도가 존재 확신 : 컨트롤러

넣어

def create 
    bar = Bar.first 
    @foo = Foo.new(foo_params.merge(bar: bar)) 
end 

또는 형태로 넣기

<%= f.hidden_field :bar_id, value: Bar.first %> 

답변

0

업 로더가 속한 모델의 모든 속성에 model 속성을 사용하여 액세스 할 수 있습니다.

참고 : 귀하의 경우 그래서 https://github.com/carrierwaveuploader/carrierwave#conditional-versions

+0

나는 당신이, 내가 초기화에 디버그 시도가 내 문제를 클리 어리 읽을했다고 생각 'model.bar_id'는 항상 nil입니다. – itx

+0

죄송합니다. 'model.bar_id' 대신에'bar_id'를 호출하려고했습니다. 'Foo'를 저장할 때'bar_id'에 접근하려고 했습니까? 그럼 아직도 제로입니까? 또한'bar' 대신'new'에'bar_id'를 설정하려고 할 수 있습니다 :'foo_params.merge (bar_id : bar.id)' – Spa

+0

'bar_id'는'Foo' 레코드를 저장할 때 nil이 아닙니다. – itx