Rails应用控制器是否关联模板及模板存放位置咨询
用Rails的Application Controller直接定义动作并渲染视图
当然可以!你完全不需要新建控制器,直接在ApplicationController里加自定义动作,Rails会像处理普通控制器动作那样,自动尝试匹配对应的视图模板。下面给你拆解具体操作:
1. 给Application Controller加动作
打开app/controllers/application_controller.rb,直接添加你想要的动作,比如你提到的a:
class ApplicationController < ActionController::Base def a # 这里可以添加你需要的逻辑,比如给视图传递实例变量 # @greeting = "Hello from ApplicationController!" end end
2. 配置路由指向这个动作
打开config/routes.rb,把路由指向Application Controller的动作即可,两种常用写法:
- 如果你想指定一个专属路径(比如访问
/a触发动作):get '/a', to: 'application#a' - 要是想把它设为网站根路径(访问
http://127.0.0.1:3000/就触发):root 'application#a'
3. 视图模板的存放位置
普通控制器的视图都放在app/views/控制器名/目录下,Application Controller对应的视图目录是app/views/application/——如果这个目录不存在,你需要手动创建它。
然后把动作对应的模板文件放在这个目录里,比如动作a对应的模板就是app/views/application/a.html.erb,在里面编写你要展示的内容即可。
小提醒
- 因为所有控制器都继承自
ApplicationController,如果其他控制器里没定义同名动作,不小心访问对应路由可能会触发这里的动作,所以动作名称尽量别太通用,避免冲突。 - 要是不想遵循默认的视图路径,也可以在动作里手动指定要渲染的模板,比如:
def a render 'shared/custom_a' # 会去app/views/shared/custom_a.html.erb查找模板 end
内容的提问来源于stack exchange,提问作者barlop
相关产品推荐
相关产品推荐

