Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将文件名传递给Rails生成器模板_Ruby On Rails_Ruby On Rails 4_Generator - Fatal编程技术网

Ruby on rails 将文件名传递给Rails生成器模板

Ruby on rails 将文件名传递给Rails生成器模板,ruby-on-rails,ruby-on-rails-4,generator,Ruby On Rails,Ruby On Rails 4,Generator,我想创建一个生成器,为我在Rails 4中工作的系统创建一些定制的脚手架。我有一个基本生成器,这行代码将文件从模板复制到目标 copy_file "controllers/module_controller.rb", "app/controllers/#{file_name}_controller.rb" 这很好,但我想知道的是如何在模板中使用#{file_name}?例如,我可以做这样的事情吗 class <%= "#{file_name}" %>Controller <

我想创建一个生成器,为我在Rails 4中工作的系统创建一些定制的脚手架。我有一个基本生成器,这行代码将文件从模板复制到目标

 copy_file "controllers/module_controller.rb", "app/controllers/#{file_name}_controller.rb"
这很好,但我想知道的是如何在模板中使用#{file_name}?例如,我可以做这样的事情吗

 class <%= "#{file_name}" %>Controller < ApplicationController
类控制器
尽管我做的有点不同。我们需要使用
模板
方法,而不是
复制文件

class SomethingGenerator < Rails::Generators::NamedBase
  source_root File.expand_path('../templates', __FILE__)
  def copy_files
    # Controller
    template "controllers/something_controller.erb", "app/controllers/#{something_name}_controller.rb"
  end

  private
  def something_name
    file_name.underscore
  end
end
class SomethingGenerator

这也适用于视图和其他文件。关键是使用Dileep Nandanam指出的.erb文件。

我猜您使用erb进行定制搭建。 创建通用_controller.erb

class <%= controller_name %>Controller < ApplicationController
    some stuff using erb
end
这会给你

class SomethingController < ApplicationController
    some stuff using erb
end
class-SomethingController

希望这将帮助您

使用erb文件是一条可行之路。
class SomethingController < ApplicationController
    some stuff using erb
end