Не удалось найти курс без удостоверения личности - PullRequest
0 голосов
/ 20 апреля 2019

Когда я пытаюсь получить доступ к app / views / companies / courses / show.html.erb (который перенаправляется после app / views / companies / courses / new.html.erb), сервер rails сообщает, что не может найти курсбез удостоверения личности.

Кроме того, когда я запускаю Course.all на консоли rails, курсы имеют правильный идентификатор, правильное описание и правильный идентификатор компании, но без атрибута имени.

Приложение / контроллеры / компании /courses_controller:

class Companies::CoursesController < ApplicationController
  before_action :authenticate_company!

  def new
    @course = Course.new
  end

  def create
    @course = current_company.courses.create(course_params)
    if @course.save
      redirect_to companycourse_path(:course => @course.id)
    else
      render 'new'
    end
  end

  def show
    @course = current_company.courses.find(params[:id])
  end

  def index
    @courses = current_company.courses.all
  end

  private

  def course_params
    params.require(:course).permit(:title, :description)
  end
end

Приложение / модели / course.rb:

class Course < ApplicationRecord
  belongs_to :company
end

Приложение / models / company.rb:

class Company < ApplicationRecord
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable
  has_many :courses
end

Config / rout.rb:

Rails.application.routes.draw do
  devise_for :companies
  devise_for :users
  root 'static_pages#home'
  get 'users/:id' => 'users#show'
  resources :users, only: [:show]
  get 'companies/:id' => 'companies#show'
  resources :companies, only: [:show] do
    resources :courses, only: [:show,:new,:create,:index]
  end

  devise_scope :user do
    get 'signup', to: 'users/registrations#new'
    get 'login', to: 'users/sessions#new'
  end

  devise_scope :company do
    get 'companysignup', to: 'companies/registrations#new'
    get 'companylogin', to: 'companies/sessions#new'
    get 'newcourse', to:'companies/courses#new'
    post 'newcourse', to:'companies/courses#create'
    get 'companycourse', to:'companies/courses#show'
    get 'companycoursesindex', to:'companies/courses#index'
  end

end

1 Ответ

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

Недавно у меня была похожая проблема при создании приложения, и моя проблема исходила от контроллеров.

В вашем rout.rb я бы добавил resources :companies, :has_many => :courses .Я также добавил бы проверку вашей модели курса в models / course.rb, чтобы убедиться, что при сохранении ее в базе данных ваш объект имеет заголовок: class Course < ApplicationRecord belongs_to :company validates :title, presence: :true end

Также попробуйте использовать это или что-то вроде строк в вашем courses_controller.rb вместо вашего текущего кода:

    def create
     @company = find_company
     @course = Course.new(course_params)
     @course.company_id = current_company.id
    if @course.save
     your conditions here
    else
     your conditiona here
    end
   end 

   private
    def find_company
     params.each do |name, value|
      if name == 'company_id'
        return @company = Company.find(value.to_i)
      end
     end
    nil
    end

Надеюсь, это поможет.

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