Ответ 1
Я использую gem 'haml-rails', '= 0.3.4'
в своем gemfile. он автоматически генерирует *.html.haml
без какой-либо конфигурации.
Есть ли способ настроить рельсы на использование haml по умолчанию, то есть когда создается эшафот, вместо scaffold_name/index.html.erb
генерируется соответствующий scaffold_name/index.html.haml
.
Аналогично тому, как вы можете добавить config.sass.preferred_syntax = :sass
в config/application.rb
и создать scaffold_name.sass
по умолчанию.
Попробовал добавить следующее к config/application.rb
config.generators do |g|
g.template_engine :haml
end
но запустил следующий
$ rails generate scaffold foo name:string
invoke active_record
create db/migrate/20120208152550_create_foos.rb
create app/models/foo.rb
invoke test_unit
create test/unit/foo_test.rb
create test/fixtures/foos.yml
route resources :foos
invoke scaffold_controller
create app/controllers/foos_controller.rb
error haml [not found]
invoke test_unit
create test/functional/foos_controller_test.rb
invoke helper
create app/helpers/foos_helper.rb
invoke test_unit
create test/unit/helpers/foos_helper_test.rb
invoke assets
invoke coffee
create app/assets/javascripts/foos.js.coffee
invoke sass
create app/assets/stylesheets/foos.css.sass
invoke sass
identical app/assets/stylesheets/scaffolds.css.sass
$ rails destroy scaffold foo
invoke active_record
remove db/migrate/20120208152550_create_foos.rb
remove app/models/foo.rb
invoke test_unit
remove test/unit/foo_test.rb
remove test/fixtures/foos.yml
route resources :foos
invoke scaffold_controller
remove app/controllers/foos_controller.rb
error haml [not found]
invoke test_unit
remove test/functional/foos_controller_test.rb
invoke helper
remove app/helpers/foos_helper.rb
invoke test_unit
remove test/unit/helpers/foos_helper_test.rb
invoke assets
invoke coffee
remove app/assets/javascripts/foos.js.coffee
invoke sass
remove app/assets/stylesheets/foos.css.sass
invoke sass
Я создал команду nice little bundle, чтобы заменить все erb на haml файлы, следующие за этим screencast, но я все еще заинтересован в том, чтобы сделать его по умолчанию, когда создается эшафот! Как сделать так, чтобы файлы haml (а не erb!) Генерировались по умолчанию?
Я использую gem 'haml-rails', '= 0.3.4'
в своем gemfile. он автоматически генерирует *.html.haml
без какой-либо конфигурации.
В конфигурации приложения попробуйте установить следующее:
config.generators do |g|
g.template_engine :haml
end
если у вас есть gem 'haml-rails' в вашем Gemfile, он должен создавать файлы haml по умолчанию вместо erb.
Это довольно просто!
Все, что вам нужно сделать, это добавить в свой Gemfile следующее:
gem 'haml'
gem 'haml-rails'
а затем запустите bundle install
Ошибка haml [not found]
обычно связана с тем, что пакет неполный. Вы пытались запустить bundle update
, а затем перезапустить генератор?
Обнаружено, что это полное решение
Скажите, есть ли проект Rails Engine с именем rails_address
Добавьте конфигурацию haml в lib/rails_address/engine.rb
module RailsAddress
class Engine < ::Rails::Engine
isolate_namespace RailsAddress
config.generators do |g|
g.template_engine :haml
end
end
end
Добавлен haml deps к rails_address.gemspec
...
s.add_dependency "rails", "~> 4.1.10"
s.add_dependency 'haml', '~> 4.0.6'
s.add_dependency 'haml-rails', '~> 0.9.0'
...
Наконец, требуется haml gems в lib/rails_address.rb
require "rails_address/engine"
require "haml"
require "haml-rails"
module RailsAddress
end
Выполняйте a bundle install
только если вы еще не установили драгоценные камни haml.
Теперь, когда вы создаете с помощью эшафота или контроллера, вы создадите представления haml.
ех.
$ rails g scaffold Address street:string city:string state:string zip_code:string
...
invoke haml
exist app/views/rails_address/addresses
create app/views/rails_address/addresses/index.html.haml
create app/views/rails_address/addresses/edit.html.haml
create app/views/rails_address/addresses/show.html.haml
create app/views/rails_address/addresses/new.html.haml
create app/views/rails_address/addresses/_form.html.haml
...