1

这里是我的设置:的Rails:未初始化的常数控制器

路线:

resources :apps, except: [:index, :new], path: 'a' do 
    resources :platforms, only: [:update] 
end 

控制器:

class Apps::PlatformsController < ApplicationController 

    before_action :authenticate_user! 
    before_action :set_platform 

    # PATCH/PUT /apps/1/platforms/1 
    # PATCH/PUT /apps/1/platforms/1.json 
    def update 
     # do stuff ... 
    end 

    private 

    # Use callbacks to share common setup or constraints between actions. 
    def set_platform 
     @platform = App::Platform.find params[:id] 
    end 

end 

查看:

= link_to 'Update', app_platform_url(platform.app.slug, platform.id), method: :put 

当点击该链接,我得到以下错误:

uninitialized constant PlatformsController


为什么Rails的寻找PlatformsController而不是Apps::PlatformsController

回答

2

据我所知,只需namespace s和scope需要一个嵌套模块。

+0

你知道比namespacing每个嵌套路由更好的解决方案吗?因为这是创造丑陋的网址助手,如'app_apps_platform_url'。 – jonhue

+0

您可以使用命令空间阻止所有路由 – Ursus

+1

或者如果路由名称是问题,则使用as选项重命名路由 – Ursus

相关问题