#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