You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否修改Rails应用中“app”文件夹名称?适配API开发及前端存放

当然可以!Rails其实给了我们很大的灵活性来调整核心目录结构,完全不用依赖符号链接就能实现你想要的效果——把api文件夹作为后端资源的根目录,把app留给前端代码。下面是具体的配置步骤:

调整Rails核心目录路径

首先要告诉Rails去哪里找你的控制器、模型等资源,在config/application.rb里修改config.paths:

# config/application.rb
module YourAppName
  class Application < Rails::Application
    # 替换默认的app目录路径为api
    config.paths['app/controllers'] = ['api/controllers']
    config.paths['app/models'] = ['api/models']
    # 如果用到序列化器、Job等,也可以一并调整
    config.paths['app/serializers'] = ['api/serializers']
    config.paths['app/jobs'] = ['api/jobs']

    # 确保Rails能自动加载api目录下的代码
    config.autoload_paths << Rails.root.join('api')
    config.eager_load_paths << Rails.root.join('api')
  end
end
配置生成器(可选但推荐)

如果你希望用rails generate命令创建控制器、模型时,默认生成到api文件夹而不是app,可以在config/application.rb里添加生成器配置:

# config/application.rb
config.generators do |g|
  # 根据你的需求调整生成器选项,比如关闭不需要的文件
  g.helper false
  g.stylesheets false
  g.jbuilder false
  g.view_specs false

  # 指定生成文件的目标目录
  g.controller directory: 'api/controllers'
  g.model directory: 'api/models'
  g.serializer directory: 'api/serializers'
end
调整路由(按需)

如果你的API版本化或者需要区分前端路由和API路由,可以给API控制器加上命名空间,比如在config/routes.rb里:

namespace :api, defaults: { format: :json } do
  # 这里写你的API路由,比如
  resources :posts
end

对应的控制器文件就要放在api/controllers/api/posts_controller.rb,类名是Api::PostsController。如果不需要命名空间,直接写普通路由即可,Rails会自动从api/controllers里找对应的控制器。

验证配置

配置完成后,你可以:

  • 创建api/controllers和api/models文件夹,把原有的后端代码移过去,或者用生成器创建新的资源测试
  • 启动服务器,访问API路由,确认控制器能正常响应
  • 打开rails console,尝试调用模型,确认能正确加载

这样一来,你就可以把前端代码放心地放在app文件夹里,完全不需要符号链接啦!

内容的提问来源于stack exchange,提问作者Ten Bitcomb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:00:47