Почему я получаю эту неинициализированную постоянную ошибку? - PullRequest
0 голосов
/ 11 июня 2018

Это ошибка, которую я получаю: uninitialized constant SellController, когда я пытаюсь перейти по этому URL: http://localhost:3000/port_stocks/6/sell/new

Это мои маршруты:

  resources :port_stocks do
    resources :sell
  end

  namespace :port_stocks do
    resources :buy
  end

Это мои app/controllers/port_stocks/sell_controller.rb

class SellController < ApplicationController

  def show
  end

  def create
    # Lots of code here
  end

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

    def set_portfolio
      @portfolio = current_user.portfolio
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def port_stock_params
      params.require(:port_stock).permit(:portfolio_id, :stock_id, :volume, :purchase_price, :current_price, :percent_change, :bought_on, :action)
    end
end

Что может быть причиной этого?

Ответы [ 3 ]

0 голосов
/ 11 июня 2018

Измените ваши маршруты так:

namespace :port_stocks do
  resources :sell
  resources :buy
end
0 голосов
/ 11 июня 2018

Похоже, что вы ищете вложенный маршрут, в этом случае ваш контроллер должен быть на

app/controllers/sell_controller.rb

, а не

app/controllers/port_stocks/sell_controller.rb

, этот тип иерархии для пространства имен,что-то вроде ..

namespace :admin do
  resources :articles, :comments
end

будут выглядеть маршруты для вложенных.

resources :articles do
  resources :comments
end
0 голосов
/ 11 июня 2018

Поскольку ваши sell маршруты пытаются найти контроллер

`app/controllers/sell_controller.rb`

В то время как ваш контроллер находится в каталоге port_sockets.

Вложенный маршрут не ищет вложенныйконтроллер.Вы можете взглянуть на документы .

Вы можете запустить rails routes и посмотреть, на какой контроллер ваши маршруты отправляют запрос.

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