这是我的代码
<h1>RailsBridgeCorp Open Jobs</h1>
<% @jobs.each do |job| %>
<h3><%= job.title %></h3>
<p><%= job.description %></p>
<% end %>
然而我得到一个错误,说
undefined 方法 'each' for nil:nilClass
它没有意识到我在这个文件上使用 ruby。
这是控制器
你的JobsController
搞砸了。您的index
操作位于new
操作中。以下是更正后的代码:
class JobsController < ApplicationController
def new
@job = Job.new
end
def index
@jobs = Job.all
end
def create
Job.create(job_params)
redirect_to jobs_path
end
private
def job_params
params.require(:job).permit(:title, :description)
end
end
如果您有兴趣了解为什么 Rails 即使在不存在操作的情况下仍index
渲染视图,请参阅此处http://guides.rubyonrails.org/layouts_and_rendering.html#rendering-by-default-convention-over-configuration-in-action
您的作业控制器搞砸了
应该是这样的
class JobsController < ApplicationController
def new
@job = Job.new
end
def index
@jobs = Job.all
end
def create
Job.create(job_params)
redirect_to jobs_path
end
private
def job_params
params.require(:job).permit(:title, :description)
end
end
然后你可以在 index.html.erb 中调用 @jobs,然后它会像这样工作