Ruby on rails NoMethodError(未定义的方法“projects';用于nil:NilClass):

Ruby on rails NoMethodError(未定义的方法“projects';用于nil:NilClass):,ruby-on-rails,Ruby On Rails,NoMethodError(对于nil:NilClass,未定义的方法项目]: app/controllers/project_controller.rb:8:inindex' 这是一个项目控制员: class ProjectController < ApplicationController before_action :confirm_logged_in before_action :find_company def index @projects = @

NoMethodError(对于nil:NilClass,未定义的方法<代码>项目]: app/controllers/project_controller.rb:8:inindex'

这是一个项目控制员:

class ProjectController < ApplicationController

  before_action :confirm_logged_in

  before_action :find_company


  def index

    @projects = @company.projects.sorted
  end

  def show

    @project = Project.find(params[:id])
  end

  def new

    @project = Project.new()
    @project_count = Project.count + 1
    @companys = Company.order("position ASC")
  end

  def create

    @project = Project.new(project_params)
    if @project.save
      redirect_to(:action => 'index')
    else

      @project_count = Project.count + 1
      @companys = Company.order("position ASC")
      render('new')
    end
  end

  def edit

    @project = Project.find(params[:id])
    @project_count = Project.count 
    @companys = Company.order("position ASC")
  end

  def update

    @project = Project.find(params[:id])
    if @project.update_attributes(project_params)
      redirect_to(:action => 'index')
    else

      @project_count = Project.count
      @companys = Company.order("position ASC")
      render('new')
    end
  end

  def delete

    @project = Project.find(params[:id])
  end

  def destory

    @project = Project.find(params[:id])
    @project.destroy
    redirect_to(:action => 'index')
  end


  private 

  def project_params

   params.require(:project).permit(:name, :position, :type_of_project, :description, :no_of_tasks)
  end

  def find_company

    if params[:company_id]
      @company = Company.find(params[:company_id])
    end
  end
end
class ProjectController'index')
其他的
@project\u count=project.count+1
@公司=公司订单(“职位ASC”)
呈现('新')
结束
结束
定义编辑
@project=project.find(参数[:id])
@project\u count=project.count
@公司=公司订单(“职位ASC”)
结束
def更新
@project=project.find(参数[:id])
if@project.update_属性(project_参数)
将_重定向到(:action=>'index')
其他的
@project\u count=project.count
@公司=公司订单(“职位ASC”)
呈现('新')
结束
结束
def删除
@project=project.find(参数[:id])
结束
破坏
@project=project.find(参数[:id])
@破坏计划
将_重定向到(:action=>'index')
结束
私有的
def项目参数
参数require(:project).permit(:名称,:位置,:项目类型,:描述,:任务编号)
结束
def find_公司
如果参数[:公司id]
@company=company.find(参数[:company\u id])
结束
结束
结束

错误意味着
@公司
。公司来自方法
find_company
,您可以更正
find_company
逻辑,或者在请求中提供
company_id
参数。如果
@company
为零,您还可以调整
index
方法以获取所有项目,如下所示:

def index
  @projects = Project.all.sorted
end

这完全取决于您希望如何加载项目。

要进入索引页,您的链接url或按钮url是什么。您需要传递
:company_id
参数才能使其工作

e、 g

projects\u path(:company\u id=>company.first.id)

def index
  @projects = Project.all.sorted
end