2012-02-08 36 views
43

Có cách nào để định cấu hình đường ray để sử dụng haml theo mặc định hay không, tức là khi một giàn giáo được tạo theo scaffold_name/index.html.haml được tạo thay vì scaffold_name/index.html.erb.haml theo mặc định

Tương tự như cách bạn có thể thêm config.sass.preferred_syntax = :sass vào config/application.rb và có scaffold_name.sass được tạo theo mặc định.

Cố gắng thêm dòng sau vào config/application.rb

config.generators do |g| 
    g.template_engine :haml 
end 

nhưng dọa lên với những điều sau

$ 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 

Tôi tạo ra một tốt đẹp chút bó lệnh để thay thế tất cả ERB với các tập tin Haml sau this thu hình màn ảnh nhưng tôi m vẫn quan tâm đến việc làm cho nó mặc định khi giàn giáo được tạo ra! Làm thế nào để làm cho nó để các tập tin haml (không erb!) Được tạo ra theo mặc định?

+0

Đây là đường ray. Chào mừng lên tàu. – Green

Trả lời

66

Tôi sử dụng gem 'haml-rails', '= 0.3.4' trong gemfile của mình. nó sẽ tự động tạo ra *.html.haml mà không cần bất kỳ cấu hình nào.

+9

Chỉ định hạn chế phiên bản thường không cần thiết cho các dự án mới trừ khi bạn biết sự cố với phiên bản mới nhất. – Kelvin

+1

Haml-ray phiên bản 0.4 là phiên bản cuối cùng để hỗ trợ Rails 3. – johnnymire

+0

http://stackoverflow.com/questions/18485147/haml-rails-on-rails-4-0/37693041#37693041 –

11

Trong cấu hình ứng dụng của bạn, hãy thử đặt sau:

config.generators do |g| 
    g.template_engine :haml 
end 
+0

Điều đó mang lại cho tôi 'lỗi haml [không tìm thấy]', haml-ray chắc chắn là trong tệp gem và tôi nghĩ rằng bạn đang đi đúng hướng nhưng template_engine thích hợp là gì để chỉ định haml hoặc làm cách nào để thêm hỗ trợ cho điều này? – rudolph9

+2

Thử thêm đá quý 'haml' vào đá quý GemFile 'haml', '~> 3.1.4' 'haml-ray' của đá quý ',' 0.3.4 ' –

0

Các lỗi haml [not found] thường vì bó là không đầy đủ. Bạn đã thử chạy bundle update và sau đó chạy lại trình tạo?

+0

Không vấn đề gì vẫn còn tồn tại. Đã thử 'cập nhật gói', vấn đề vẫn tồn tại. Đã xóa 'Gemfile.lock' và được gọi là' bundle install', vấn đề vẫn tồn tại. – rudolph9

8

nếu bạn có gem 'haml-rails' trong Gemfile của bạn, nó sẽ tạo tệp haml theo mặc định thay vì xóa.

6

Điều này khá đơn giản!

Tất cả bạn cần làm là thêm dòng sau vào Gemfile của bạn:

gem 'haml' 
gem 'haml-rails' 

và sau đó chạy bundle install

1

Các mặt hàng này là giải pháp hoàn chỉnh

Say nếu bạn có một Rails Dự án động cơ có tên rails_address

Thêm cấu hình haml vào 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 

Added 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' 
... 

Cuối cùng yêu cầu đá quý Haml trong lib/rails_address.rb

require "rails_address/engine" 
require "haml" 
require "haml-rails" 

module RailsAddress 
end 

Thực hiện một bundle install chỉ trong trường hợp bạn chưa cài đặt đá quý haml.

Bây giờ khi bạn tạo qua giàn giáo hoặc bộ điều khiển, bạn sẽ tạo chế độ xem haml.

ví dụ:

$ 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 
... 
+0

Tuyệt vời, cảm ơn, đã giải quyết vấn đề của tôi. Mặc dù, tôi nghĩ rằng nó đáng nói đến khi tôi chỉ định 's.add_dependency 'haml'' trong rails_address.gemspec và' g.template_engine: haml' trong các tệp lib/rails_address/engine.rb đủ để làm cho nó tạo ra các khung nhìn haml . (sử dụng đường ray 5.1.4) – Misu

Các vấn đề liên quan