rails - 在另一个控制器视图中显示部分内容
rails - display partial in another controllers view
我不确定为什么我无法将索引操作传递到我的视图。基本上我有一个名为 "jobs" 的控制器和一个名为 "recent jobs" 的部分,我想在另一个名为 "static_pages".
的控制器视图中显示 "recent jobs" 部分
我认为我所要做的就是在 static_pages/home.html.erb:
中调用以下内容
<%= render partial: "jobs/recent_jobs" %>
但这是我得到的错误。显然@jobs 是 nil。
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
并渲染 static_pages#home
时,您需要先定义它,您只在 jobs#index
中定义了它,这就是为什么当视图呈现的值为 nil
.
在适当的控制器中添加 @jobs
应该有效:
class StaticPagesController < ApplicationController
def home
@jobs = Job.all
end
end
并且注意用<%= render 'jobs/recent_jobs' %>
Rails推断是一个部分文件,不需要使用partial
选项。此外,要打印职位名称,您需要使用 <%= %>
.
我不确定为什么我无法将索引操作传递到我的视图。基本上我有一个名为 "jobs" 的控制器和一个名为 "recent jobs" 的部分,我想在另一个名为 "static_pages".
的控制器视图中显示 "recent jobs" 部分我认为我所要做的就是在 static_pages/home.html.erb:
中调用以下内容 <%= render partial: "jobs/recent_jobs" %>
但这是我得到的错误。显然@jobs 是 nil。
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
并渲染 static_pages#home
时,您需要先定义它,您只在 jobs#index
中定义了它,这就是为什么当视图呈现的值为 nil
.
在适当的控制器中添加 @jobs
应该有效:
class StaticPagesController < ApplicationController
def home
@jobs = Job.all
end
end
并且注意用<%= render 'jobs/recent_jobs' %>
Rails推断是一个部分文件,不需要使用partial
选项。此外,要打印职位名称,您需要使用 <%= %>
.