неопределенный метод `задания» для nil: NilClass в моем приложении rails

#ruby-on-rails #ruby

#ruby-на-рельсах #рубиновый #ruby-on-rails #ruby

Вопрос:

Пожалуйста, ребята, мне нужна помощь в решении этой проблемы. Я пытался найти работу / новую.С моей консоли rails;

 NoMethodError - undefined method `jobs' for nil:NilClass:
  app/controllers/jobs_controller.rb:17:in `new'
  

маршруты.рб

 Rails.application.routes.draw do
  resources :jobs
  devise_for :users
    resources :home
    root 'jobs#index'
  end
  

jobs_controller.rb

  # GET /jobs/new
  def new
    @job = current_user.jobs.build
  end

  # POST /jobs
  # POST /jobs.json
  def create
    @job = current_user.jobs.build(job_params)

    respond_to do |format|
      if @job.save
        format.html { redirect_to @job, notice: 'Job was successfully created.' }
        format.json { render :show, status: :created, location: @job }
      else
        format.html { render :new }
        format.json { render json: @job.errors, status: :unprocessable_entity }
      end
    end
  end
  

Комментарии:

1. Просто проверьте, инициализируется ли current_user он перед выполнением этих действий (создать, создать).

2. @SebastianPalma спасибо, но я думаю, мне нужна помощь в этом. не могли бы вы, пожалуйста

3. Поставьте byebug или binding.pry (в случае, если вы используете pry) прямо перед любым current_user.jobs вызовите и продолжите выполнение этого действия, затем проверьте rails-сервер.

4. Спасибо @SebastianPalma. Я не добавлял before_action:authenticate_user ! в jobs_controller. Я добавил его, и теперь он работает

5. Это здорово. Не забывайте, что вы можете ответить на свой собственный вопрос.

Ответ №1:

Я не добавлял before_action:authenticate_user ! в jobs_controller.

Я добавил его, и теперь он работает:

 # jobs_controller
class JobsController < ApplicationController
  before_action :authenticate_user!, except: [:index, :show]

  # stuffs
  def method
  end

  def method
  end
end