2014-11-16 2 views
1

나는 부분을 렌더링하기 위해 노력하고, 데이터를 전달하는 기호를 사용하려는거야에서 수집을 수행 할 수 없습니다 분류 기호를 수집하지 않으면 다음 오류가 발생합니다.레일 부분 지문은 기호

undefined method `collect' for :categories:Symbol 

    Extracted source (around line #9): 

<%= f.select :category_id, :categories.collect{ |c| [c.name, c.id]}, {}, :style => 'font-size:1em;width:250px;' %> 

기호를 이런 식으로 사용할 수 없습니까?

답변

2

대신 categories의, :categoriescollect을 요구하고있다. 대신

<%= f.select :category_id, :categories.collect{ |c| [c.name, c.id]}, {}, :style => 'font-size:1em;width:250px;' %> 

<%= f.select :category_id, categories.collect { |c| [c.name, c.id]}, {}, :style => 'font-size:1em;width:250px;' %> 

은 또한, 당신은 render를 호출하는 두 개의 구문을 혼합한다. 그것은 하나

<%= render partial: 'form', :locals => { :course => @course, :categories => @categories } %> 

또는

<%= render 'form', :course => @course, :categories => @categories %> 
+0

네, 그렇게하면 효과가 있지만 여기서는 모범 사례를 따르려고합니다. 오오 아이러니 :) – fatfrog

+1

가장 좋은 방법은 변수를 로컬 변수로 전달하는 것입니다. 이렇게하는 것은 부분적으로 내부에서 가져 오는 방법은 로컬에서와 같은 방식으로 호출되는 자동 생성 된 참조를 사용하는 것입니다. 물론 심볼을 쓰는 방법을 나타내는':'이 없다. –

+1

'render'를 호출하고'locals'를 전달하는 방법에 또 다른 오류가있었습니다. 나는 나의 대답을 업데이트했다. –

0

부분적으로 기호를 참조하지 말고 해당 인스턴스를 참조하십시오.

<%= f.select :category_id, categories.collect{ |c| [c.name, c.id]}, {}, :style => 'font-size:1em;width:250px;' %> 
+0

해야이 오류를 얻을 : 정의되지 않은 지역 변수 또는 메소드 '카테고리'#에 대한 <# <클래스 : 0x007ffa360021b0> : 0x007ffa2bec9ed8를> 내가 풍덩 경우 작동 @ 카테고리가 있으므로 데이터에 문제가 없습니다. – fatfrog