首页 > 解决方案 > nil:NilClass 的未定义方法“公司”

问题描述

我一直在我的主页上收到一条错误消息

'nil:NilClass 的未定义方法 `company'

对于下面显示的以下代码的第一行。我不太确定如何解决这个问题。我有两个控制器,因为我正在创建一个双面市场。companiescustomers

当用户单击顶部的徽标而不是被重定向到欢迎页面时,正在呈现登录页面,因为主页是 root_path 但我正在使用 devise 进行before_action身份验证。

<% if((current_user.company) || (current_user.customer)) %>
   <%= render 'pages/welcome' %>
<% else %>

<% if current_user.is_company %>
   <%= render 'companies/form', company: @company%>
<% else %>

这是home.html.erb文件,其中的代码是 root_path

<% if((current_user.company) || (current_user.customer)) %>
    <%= render 'pages/welcome' %>
<% else %>

    <% if current_user.is_company %>
        <%= render 'companies/form', company: @company%>
    <% else %>
        <%= render 'customers/form', customer: @customer%>
    <% end %>

<% end %>

这是我的公司控制器

class CompaniesController < ApplicationController
    before_action :set_company, only: [:show, :edit, :update, :destroy]

    def index
        @companies = Company.all
    end

    # GET /companies/1
    # GET /companies/1.json
    def show
       @company = Company.find(params[:company_id])
    end

    # GET /companies/new
    def new
       @company = Company.new
    end

    # GET /companies/1/edit
    def edit
    end

    # POST /companies
    # POST /companies.json
    def create
    @company = Company.new(company_params)

      respond_to do |format|

        if @company.save
            format.html { redirect_to @company, notice: 'Company was successfully created.' }
            format.json { render :show, status: :created, location: @company }
        else
            format.html { render :new }
            format.json { render json: @company.errors, status: :unprocessable_entity }
        end
      end
    end

    # PATCH/PUT /companies/1
    # PATCH/PUT /companies/1.json
    def update
      respond_to do |format|
       if @company.update(company_params)
          format.html { redirect_to @company, notice: 'Company was successfully updated.' }
          format.json { render :show, status: :ok, location: @company }
       else
          format.html { render :edit }
          format.json { render json: @company.errors, status: :unprocessable_entity }
       end
     end
   end

   # DELETE /companies/1
   # DELETE /companies/1.json
   def destroy
      @company.destroy
      respond_to do |format|
         format.html { redirect_to companies_url, notice: 'Company was successfully destroyed.' }
         format.json { head :no_content }
      end
   end

   private
      # Use callbacks to share common setup or constraints between actions.
      def set_company
          @company = Company.find(params[:id])
      end

      # Never trust parameters from the scary internet, only allow the 
      white list through.
         def company_params
            params.require(:company).permit(:username, :phone, :website, :street, :city, :state, :country, :user_id)
         end
     end

标签: javascripthtmlcssruby-on-railsruby

解决方案


它只是说current_usernil,您需要确保用户已登录才能使用current_user.company


推荐阅读