我不确定为什么我无法将索引操作传递给我的视图。基本上我有一个名为" jobs"部分被称为"最近的工作"我想展示那些"最近的工作"另一个控制器视图中的部分名为" static_pages"。
我认为我所要做的就是在我的static_pages / home.html.erb中调用以下内容:
<%= render partial: "jobs/recent_jobs" %>
但这是我得到的错误。显然@jobs是零。
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 :(得分:2)
当您正在使用@jobs
并渲染static_pages#home
时,您需要先定义它,您只能在jobs#index
中对其进行定义,并且&#39 ; s为什么在呈现视图时值为nil
。
在适当的控制器中添加@jobs
应该有效:
class StaticPagesController < ApplicationController
def home
@jobs = Job.all
end
end
注意<%= render 'jobs/recent_jobs' %>
Rails推断是一个部分文件,不需要使用partial
选项。另外,要打印作业的标题,您需要使用<%= %>
。