这是我收到的错误:uninitialized constant SellController
,当我尝试转到此网址时: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
导致这种情况的原因是什么?
答案 0 :(得分:2)
您正在寻找嵌套路线,在这种情况下,您的控制器需要位于
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
答案 1 :(得分:1)
因为您的sell
路由正在尝试查找控制器
`app/controllers/sell_controller.rb`
而您的控制器位于port_sockets
目录中。
嵌套路由不查找嵌套控制器。您可以查看docs。
您可以触发rails routes
并查看您的路由将请求发送到哪个控制器。
答案 2 :(得分:1)
修改您的路线:
namespace :port_stocks do
resources :sell
resources :buy
end