2013-02-12 3 views
0

Producer 및 Product 모델을 설정했습니다. 내가 새로운 제품을 만들고 싶을 때 나는 목록에서 생산자를 선택할 수있다.관련 모델 ID를 Rails에 저장할 수 없습니다.

<%= select("producer", "producer_id", Producer.all.collect {|t| [ t.name, t.id ] }, {:prompt => 'Select producer'})%> 

그것은 잘 작동하지만 내가 만든 제품을 저장할 때, 그것은 producer_id 내가 만든 유효성 검사로 인해 발생하는 공백 수 없다는 것을 나타 : 여기에 코드입니다. 제품 표, 생성 된 연관성, 내가 들었던 모든 것에 대해 열 producer_id을 설정했습니다. 여기

내 코드입니다 :

제품 컨트롤러

def new 
@product = Product.new 

respond_to do |format| 
    format.html # new.html.erb 
    format.json { render json: @product } 
end 

def create 
    @product = Product.new(params[:product]) 
end 

제품 모델

belongs_to :producer 

생산자 모델

has_many :products 

누군가가 도울 수 있기를 바랍니다.

+1

<% = select ("producer", "producer_id", Producer.all.collect { {. prompt => '프로듀서 선택}}) %}'첫 번째 매개 변수가'생산자 '대신'제품 '이 아니어야합니까? – jvnill

+0

@jvnill 예. '실수로 4의 ID를 요구하는 호출 된 ID - nil의 id를 원한다면 object_id를 사용하십시오. – Edgars

+1

코드의 어떤 곳에서'nil.id'를 호출하고 있습니다. 코드 부분을 포함하십시오. 그 질문에이 오류가 발생합니다. – jvnill

답변

1

문제는 컨트롤러에서 params [: product]를 참조하지만보기에서 "producer"를 사용한다는 것입니다. 선택 ("생산자".. 선택 ("제품"을 선택하고 그것을 잘 작동합니다)

def create 
    @product = Product.new(params[:product]) 
end 

<%= select("producer", "producer_id", Producer.all.collect {|t| [ t.name, t.id ] }, {:prompt => 'Select producer'})%>