1

generatorsに関するドキュメントを読みましたが、ビューの作成に関する情報が見つかりません。Rails 3 Generators gemのコードを読んでみると、新しいテンプレートを に配置することでデフォルトのテンプレートをオーバーライドできることがわかりましたlib/generators/erb/scaffold/templates/scaffold_generator.rb次のようなスニペットを使用して、ファイルに作成するビューを指定することもできます。

def available_views
  ['index', 'edit', 'show', 'new', '_form']
end

私の質問は、index.html.erbファイルとファイルの両方を作成したい場合はどうすればよいindex.js.erbですか?

4

2 に答える 2

1

どうやら、ビューの実際の作成は と呼ばれる関数によって行われますcopy_view_files。その関数内で必要なビューのタイプを指定できます。その後、私のscaffold_generator.rb見た目は次のようになります。

'rails/generators/erb/scaffold/scaffold_generator' が必要です

module Erb
  module Generators
    class ScaffoldGenerator < Erb::Generators::ScaffoldGenerator
      source_root File.expand_path(File.join('..', 'templates'), __FILE__)

      def copy_view_files
        primary_views.each do |view|
          filename = filename_with_extensions view
          template "#{view}.html.erb", File.join('app', 'views', controller_file_path, filename)
          template "#{view}.js.erb", File.join('app', 'views', controller_file_path, filename)
        end
      end

      hook_for :form_builder, :as => :scaffold

      protected
        def primary_views
          ['index', 'edit', 'show', 'new']
        end

        def handler
          :erb
        end
    end
  end
end

copy_view_files関数内で、 への 2 つの呼び出しがあることに注意してくださいtemplate。1 つ目は一連の html ビューを作成し、2 つ目は必要な js ビューを作成します。

于 2013-05-01T18:01:05.170 に答える