なぜ私のインデックス操作を私のビューに渡すことができないのかわかりません。基本的に私は、 "最近の仕事"と呼ばれる部分的な "仕事"と呼ばれるコントローラを持っていて、 "static_pages"という別のcontollersビューにその "最近の仕事"を部分的に表示したい。rails - 他のコントローラの表示に部分的に表示
私は私がしなければならないだろう、すべては私のstatic_pages/home.html.erbに以下の呼び出しであることを考えた:
<%= render partial: "jobs/recent_jobs" %>
が、ここでは私が取得エラーです。明らかに@仕事はnilです。あなたは、@jobs
での作業、そしてあなたがそれを最初に定義する必要がありstatic_pages#home
をレンダリングしているとして、ここで
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
私がテストを開始したとき、部分的にローカル変数を渡す必要はなく、最初に言及したように各ブロックを修正する必要はないことに気付きました。必要なのは、@jobs = Job.allをstatic_pagesホームコントローラに追加するだけでした。コメントの中でこのことをさらに言及したので、私はその答えに投票しました。あなたのコメントを別の答えにしたいのであれば、私は正しい印を付けることができます。私はちょうど誰かが混乱するために同じ問題を抱えていた未来を望んでいない。ご協力いただきありがとうございます。 – Scott
あなたは正しいです。私は答えを更新しました。 –