2017-12-08 16 views
1

내 인덱스 액션을 내보기로 전달할 수없는 이유가 확실하지 않습니다. 기본적으로 "최근 작업"이라고 불리는 부분이있는 "작업"이라는 컨트롤러가 있는데 "static_pages"라는 또 다른 contollers보기에서 "최근 작업"부분을 표시하려고합니다.rails - 다른 컨트롤러보기에 부분 표시

<%= render partial: "jobs/recent_jobs" %> 

을하지만, 여기에 내가 오류입니다 :

나는 내가해야 할 것 모두가 내 static_pages/home.html.erb에서 아래를 호출이라고 생각했다. 분명히 @ jobs는 0입니다.

ActionView::Template::Error (undefined method `each' for nil:NilClass): 
2: <div class="homepage_recent_jobs"> 
3: <div class="container"> 
4:  
5:  <% @jobs.each do |job| %> 
6:  <% job.title %> 
7:  <% end %> 
8:  

여기에 작업 컨트롤러 내 부분의

<div class="homepage_recent_jobs"> 
     <div class="container"> 

     <% @jobs.each do |job| %> 
      <% job.title %> 
     <% end %> 
    </div> 
    </div> 

작업 인덱스 작업을

def index 

    set_link_order_and_counters  

    @jobs = Job.all 

    # calls scopes 
    if params[:experience].present? 
    @jobs = @jobs.by_experience(params[:experience]) 
    end 

    if params[:num_days_past].present? 
    @jobs = @jobs.by_num_days_past(params[:num_days_past].to_i) 
    end  


    @jobs = @jobs.paginate(page: params[:page], per_page: 5) 
end 
+0

테스트를 시작할 때 부분 변수와 함께 지역 변수를 전달하거나 처음 언급 한 것처럼 각 블록을 수정할 필요가 없다는 것을 깨달았습니다. 필요한 것은 @jobs = Job.all을 static_pages 홈 컨트롤러에 추가하는 것뿐이었습니다. 당신은 코멘트에서 이것을 더 언급했다 그래서 나는 그 대답을 투표했다. 귀하가 귀하의 의견을 명확하게 표시 할 수있는 별도의 답변을하고 싶다면 그 대답을 기꺼이 받아들이는 것 이상입니다. 나는 누군가가 혼란스러워하는 동일한 문제를 겪고있는 미래를 원하지 않았다. 도와 줘서 고마워. – Scott

+0

네 말이 맞아. 답변을 업데이트했습니다. –

답변

2

당신이 @jobs 작업, 당신은 먼저 정의해야 static_pages#home을 렌더링하고, 당신 jobs#index에서만 정의 했으므로보기가 렌더링 될 때 값은 nil입니다.

class StaticPagesController < ApplicationController 
    def home 
    @jobs = Job.all 
    end 
end 

을 그리고 <%= render 'jobs/recent_jobs' %> 레일를 추론과 일부 파일의 partial 옵션을 사용할 필요가 없습니다입니다주의 : 적절한 컨트롤러에 @jobs 추가

작동합니다. 또한 직위를 인쇄하려면 <%= %>을 사용해야합니다.

+0

아직도 실종 된 부분은 컨트롤러에서 부분을 렌더링하고 @jobs에 할당하는 작업을 가져와야한다는 것입니다. –

+0

나는 '@jobs = Job.all'을 보았지만'jobs # index '라고 말했고, 정적 인 페이지 # home에서 부분을 렌더링하는 것은 아직 불분명합니다. –

+0

예 static_pages # home에서 "recent_jobs"부분을 렌더링하려고합니다. @SebastianPalma에서 위의 제안을 시도했지만 여전히 동일한 오류가 나타납니다 – Scott