为什么index.html.erb没有执行我的Ruby代码



这是我的代码

<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,然后它会像这样工作

最新更新