Используйте Devise current_user для создания новой записи с отношением has_many - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь сделать новую запись в моем методе создания.

У пользователей много квартир.

Когда я запускаю этот код, я получаю эту ошибку:

NoMethodError (undefined method `apartments' for nil:NilClass): `create'

Вот как выглядит мой контроллер:

class ApartmentsController < ApplicationController

# skip_before_action :verify_authenticity_token

def index
    @user = User.all
    @apartments = Apartment.all
    render :json => @apartments, :include => :user
end

def create
    # apartment = Apartment.create
    # render json: apartment

    @apartment = current_user.apartments.build(params[:apartment])
end

def apartment_params
    params.require(:apartment).permit(:street_name)
end

end

Это мой контроллер приложения:

class ApplicationController < ActionController::Base
before_action :authenticate_user!
protect_from_forgery with: :null_session
before_action :configure_permitted_parameters, if: :devise_controller?

def after_sign_in_path_for(resource)
  protected_path
end

def after_sign_out_path_for(resource)
  root_path
end

def configure_permitted_parameters
  devise_parameter_sanitizer.permit(:sign_up, keys: [:name, :phone, :hours])
end

end

Я посмотрел другие подобные посты, но, похоже, не решил проблему.

Решение в этом посте не предоставило решения: Метод Current_user с использованием devise

1 Ответ

0 голосов
/ 17 апреля 2019

Это должно помочь, если вы измените:

@ apartment = current_user.apartments.build (params [: apartment])

для этого:

@ apartment = current_user.apartments.create! (Params [: apartment])

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...