在自定義生成器中生成嵌套路由 (Generating nested routes in a custom generator)


問題描述

在自定義生成器中生成嵌套路由 (Generating nested routes in a custom generator)

I'm building a generator in rails that generates a frontend and admin controller then adds the routes to the routes file. I can get the frontend working with this:

m.route_resources controller_file_name

but I can't figure out how to do the same for the nested admin route (admin/controller_file_name). Anyone know how to generate these routes?


參考解法

方法 1:

Looking at the code for route_resources, it doesn't look like it will do anything beyond a bog-standard map.resources :foos.

Instead, let's write our own method to deal with this issue, based on the original

def route_namespaced_resources(namespace, *resources)
  resource_list = resources.map { |r| r.to_sym.inspect }.join(', ')
  sentinel = 'ActionController::Routing::Routes.draw do |map|'
  logger.route "#{namespace}.resources #{resource_list}"
  unless options[:pretend]
    gsub_file 'config/routes.rb', /(#{Regexp.escape(sentinel)})/mi do |match|
      "#{match}\n  map.namespace(:#{namespace}) do |#{namespace}|\n     #{namespace}.resources #{resource_list}\n  end\n"
    end
  end
end

We can start this off as a local method in your generator, which you can now call with:

m.route_namespaced_resources :admin, controller_file_name

(by Codebeefaustinfromboston)

參考文件

  1. Generating nested routes in a custom generator (CC BY-SA 3.0/4.0)

#Code-Generation #ruby-on-rails #generator #routes






相關問題

關於編譯器中代碼生成的參考(中間表示、SSA、指令選擇、寄存器分配等)? (References on code generation in a compiler (intermediate representations, SSA, instruction selection, register allocation, etc.)?)

如何在每個新模塊中自動注入輔助類? (How to automatically inject helper classes in each new module?)

適用於Visual Studio的Python代碼生成器? (Python code generator for Visual Studio?)

為什么生成執行操作的 Java 代碼比“解釋器循環”運行得更慢? (Why does Java code generated to perform an operation run more slowly than an "interpreter loop"?)

ORM 映射的代碼生成工具 (code generation tool for ORM mapping)

Delphi 的 x86 代碼生成器框架 (x86 code generator framework for Delphi)

適用於 xpand 的 Actionscript 3 代碼美化器(MWE2 工作流程) (Actionscript 3 code beautifier for xpand (MWE2 Workflow))

Maven 中的代碼生成 (Code generation in Maven)

在自定義生成器中生成嵌套路由 (Generating nested routes in a custom generator)

是否有類似 JET(Java Emitter Templates)但沒有 Eclipse 依賴項的東西? (Is there something like JET (Java Emitter Templates) but without Eclipse-dependencies?)

Python函數,它返回自己的帶有參數的簽名 (Python function which returns its own signature with parameters)

為什麼 protobuf 更喜歡代碼生成器而不是運行時動態加載 (why protobuf prefer code-generator other than dynamic loading at runtime)







留言討論