仅适用于 JSON 的 Rails 脚手架

kle*_*eid 6 ruby api json ruby-on-rails scaffolding

当我使用rails g scaffold Model key:string value:string命令时,它会创建控制器和视图(erb、scss、js)。如何仅生成仅以 JSON 格式响应的控制器。

Mat*_*att 13

在 Rails 5+ 中使用 API 标志

无需修改配置:

rails g scaffold TestLink --api
Run Code Online (Sandbox Code Playgroud)

专业提示:使用 --pretend 标志查看运行前将创建的内容:

rails g scaffold TestLink --api --pretend
Run Code Online (Sandbox Code Playgroud)


Sha*_*aun 2

要更改脚手架生成的 Rails 控制器,您可以添加一个新文件:lib/templates/rails/scaffold_controller/controller.rb. 从 Rails 源代码复制模板作为起点可能会有所帮助。从那里您可以编辑每个操作以 结尾render json,例如:

# GET <%= route_url %>
def index
  @<%= plural_table_name %> = <%= orm_class.all(class_name) %>
  render json: @<%= plural_table_name %>.to_json
end
Run Code Online (Sandbox Code Playgroud)

要防止生成资产/视图文件,请将其添加到您的config/application.rb文件中:

module AppName
  class Application < Rails::Application
    # comments and config
    # ...
    config.generators do |g|
      g.stylesheets false
      g.javascripts false
      g.helper false
      g.views false
    end
  end
end
Run Code Online (Sandbox Code Playgroud)