一个子项目,和主项目类似,用的是 manage 域/user/feedback 这种域以及继承关系。
子项目我就直接在 user 文件夹下建了 feedbacksController 以及相关 view、model,继承关系不会有一点错。 继承关系如下:
app/controllers/user/feedbacks_controller.rb
class User::FeedbacksController < User::ApplicationController
end
app/controllers/user/application_controller.rb
class User::ApplicationController < BasesController
end
app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
end
app/controllers/base_controller.rb
class BasesController < PatternsController
end
app/controllers/patterns_controller.rb
class PatternsController < ApplicationController
end
除了 base_controller 有些常用方法,以及 patterscontroller 里的统一模板方法外,/user 下的控制器只定义了继承关系,什么都没有
在 patternscontroller 里定义了统一的 index、show 等方法
诡异的一幕出现了。重启项目,先打开 home_path,然后进入我的 user_feedbacks_path,出错,说@feedbacks为 nil。也就是说完全没有进入 patterscontroller(在 patterscontroller 里的 index 方法里打了断点,报错的时候压根没有进去) 而这时不关闭服务,直接随便找一个文件,在一个没有意义的地方加个没有意义的空格,保存。同样的地址,可以访问了。(就是 pattercontroller 的 index 页面),进入断点了...一切正常了。
但只要重启服务,先访问 home_path,然后再进 user_feedbacks_path,就妥妥的报错。
查过路由没有 user_*_path 被用的情况,除了我的 user_feedbacks_path。
换了个 person 的域指回 user 就完全正常了....
namespace :person, path: 'user' do
resources :feedbacks do
end
model 下有 user.rb,但也有个 user 文件夹,model/user 下的所有类都可以正常 curd controller 下有 users_controller
应该是这俩存在的原因吧,它的 index show 等方法和页面都可以完全正常使用,只能猜测,不知道怎么定位到问题的根源。虽然解决了问题,但只是解决了问题...