2011-01-07 12 views

Odpowiedz

7

Można zastąpić szablony używane przez Railsy do generowania. W tym przypadku wystarczy umieścić plik pod numerem lib/templates/scaffold_controller/controller.rb i zmodyfikować go w dowolny sposób. Następnym razem, gdy uruchomisz rails g scaffold [modelName], przejdziesz do nowego szablonu kontrolera i użyjesz go. Jest to opisane w oficjalnym przewodniku Section 6 of the Creating and Customizing Rails Generators.

+1

Twoja ścieżka nie działa dla mnie. Druga odpowiedź jest poprawna. – ujifgc

+3

Uwaga dla każdego, kto szuka domyślnych szablonów generatora, aby dostosować, w chwili pisania ich życia w ścieżce GEM PATH w 'gems/railties-3.x.x/lib/rails/generators'. Możesz znaleźć swoją ścieżkę GEM PATH za pomocą '$> gem environment' w linii poleceń. – Leo

15

Prawidłowa pozycja za dostosowanego pliku sterownika jest lib/templates/rails/scaffold_controller/controller.rb

+0

Przepraszam, to samo. 'rails g scaffold nazwa użytkownika: string' ignoruje plik. – Oleander

+0

Dzięki, ścieżka jest odpowiednia dla szyn kolejowych 3.1 – ujifgc

+0

To jest poprawne dla 4.x również – eprothro

12

Jeśli chcesz po prostu użyć własnego szablonu kontrolera, można po prostu umieścić go w lib/templates/rails/scaffold_controller/controller.rb

Jeśli chcesz wymienić kod sam scaffold_controller_generator, na przykład, aby rusztowanie kontrolera generowało dodatkowe pliki klas. możesz utworzyć lib/generators/rails/my_scaffold_controller/my_scaffold_controller_generator.rb z szablonami pod numerem lib/generators/rails/my_scaffold_controller/templates.

Pamiętaj, aby wskazać szyn w nowym scaffold_controller w config/application.rb:

config.generators do |g| 
    g.scaffold_controller = "my_scaffold_controller" 
end 

Dla my_scaffold_controller_generator.rb można skopiować z gem railties pod railties-3.x.x/lib/rails/generators/rails/scaffold_controller jeśli chcesz zmodyfikować domyślne zachowanie, czy dziedziczą z niego, jeśli tylko chcesz dodać funkcjonalność:

require 'rails/generators/rails/scaffold_controller/scaffold_controller_generator' 

module Rails 
    module Generators 
    class MyScaffoldControllerGenerator < ScaffoldControllerGenerator 
     source_root File.expand_path("../templates", __FILE__) 

     def new_funtionality 
     end 

    end 
    end 
end 
6

To wydaje się być nieco zmieniona z Rails 4. można zobaczyć, który szablon generator będzie szukać w linii invoke, gdy rusztowanie jest generowany, A nd szablon nazwa folderu należy dopasować to:

rails generate scaffold blub 
... 
invoke responders_controller 

Jeśli używasz szyny g blubs scaffold_controller lokalizację szablonu powinny być:

lib/templates/rails/scaffold_controller/controller.rb 

Jeśli używasz g szyn rusztowania Blub położenie szablonu powinny być:

lib/templates/rails/responders_controller/controller.rb 
+0

To rozwiązało to dla mnie, dzięki :) – Eric

+0

To się udało! Nie zdawałem sobie sprawy, że powinienem obejrzeć linię invoke, żeby to zrozumieć! Dzięki :) – Tashows

1

Jeśli ktoś ja Zastanawiasz się, dlaczego to nie działa w domyślnej instalacji Rails 4, ponieważ jBurger wstawia się do ścieżki szablonu przed przesłonięciem lokalizacji. Nie potrzebuję jbuildera, więc usunąłem go, ale zgłosiłem też problem w Github. Mam nadzieję, że wkrótce zostanie naprawiony.

+0

Link do pobrania? –

+0

AKTUALIZACJA: lib/templates/rails/scaffold_controller/controller.rb naprawiły mój problem. miał to w lib/generators/templates/rails/scaffold_controller/controller.rb –

Powiązane problemy