Rails 2.3.2 пытается рендерить ERB вместо HAML - PullRequest
3 голосов
/ 19 июля 2009

Rails внезапно пытается отобразить ERB вместо Haml, и я не могу понять, почему. Я создал новые проекты rails, переустановил Haml и переустановил Rails.

Вот именно те шаги, которые я предпринимаю при создании приложения (Rails 2.3.2):

  rails> rails test
  rails> cd test
  rails\test> haml --rails .
  rails\test> ruby script\generate model user email:string password:string
  rails\test> ruby script\generate controller users index
  rails\test> rake db:migrate

Вот как выглядит UsersController:

class UsersController < ApplicationController
  def index
    @users = User.all
  end
end

Мои маршруты:

ActionController::Routing::Routes.draw do |map|
  map.resources :users
end

Теперь я создаю views \ users \ index.html.haml :

%table
  %th(style="text-align: left;")
    %h1 Users
  - for user in @users
    %tr
      %td= user.email
      %td= user.password

и запустить сервер ... Я перехожу на localhost: 3000 \ users и получаю это сообщение об ошибке:

Template is missing

Missing template users/index.erb in view path app/views

По какой-то причине Rails пытается найти и отобразить файлы .erb вместо файлов .haml. vendor \ plugins \ haml \ init.rb существует без изменений.

Я переустанавливал Haml (Pretty Penny) несколько раз и все еще получаю те же результаты. Я также попытался добавить config.gem 'haml' в мой environment.rb, но это также не работает.

Я не могу понять, почему рельсы вдруг не окажут мне хмеля.

Ответы [ 11 ]

7 голосов
/ 20 июля 2009

Привет, похоже, что haml не включен как плагин Rails, чтобы включить его, используйте следующую команду.

Перейдите в папку приложения из командной строки и введите следующее

  $ cd ..
  $ haml --rails <yourproject>

, если это не работает, попробуйте установить гем haml со следующим кодом

$ gem install haml

Я попробовал с приведенным выше примером, у меня это сработало, в моей системе Ubuntu установлен haml gem.

Удачи!

ПРИМЕЧАНИЕ: "haml --rails" устарел в HAML 3.1

3 голосов
/ 14 апреля 2010

Стоит отметить, что тот факт, что в сообщении об ошибке говорится, что он не может найти index.erb, не означает, что он также не ищет index.haml. Расширение erb жестко запрограммировано в сообщении об ошибке.

Я думал, что у меня та же проблема, которую вы описываете, но оказалось, что мое приложение просто не может найти мою частичку вообще - это никак не связано с расширением файла.

2 голосов
/ 15 сентября 2009

У меня была такая же проблема (см. сообщение ) с Rails 2.3.4. Несколько рельсов gem uninstall / gem install не устранили проблему. Но понижение до Rails 2.3.2 работало! (Я знаю, что HAML ранее работал в этом проекте с этой версией Rails).

sudo gem install -v 2.3.2 rails
1 голос
/ 09 декабря 2014

У меня есть этот старый проект в rails 2.3.18, где гемами управляют с помощью bundler, и все, что мне нужно было сделать, это явно использовать версию 3.1.3. Он не работал с последней версией (4.0). Так что в моей версии я добавил

gem 'haml', '3.1.3'

установил пакет и перезапустил мой сервер разработки :)

1 голос
/ 31 января 2012

Используя Rails 3.1, я столкнулся с той же ошибкой, и мне пришлось перезапустить веб-сервер.

0 голосов
/ 28 апреля 2013

У меня была такая же проблема.

Решение описано в https://github.com/haml/haml/issues/672

Вам необходимо добавить

config.after_initialize do 
  require 'haml'
  Haml.init_rails(binding)
end

в вашей конфигурации / среде.рб в блоке конфигурации Rails::Initializer.run do |config| !!

0 голосов
/ 07 июня 2011

У меня была эта проблема с Ruby 1.9x, Rails 2.3.5 и HAML 3.1. Я считаю, что отчасти проблема в том, что некоторые устаревшие вызовы в 1.8 были удалены в 1.9.

ИМХО, если вы хотите использовать HAML в Rails 2, вам лучше перейти на Ruby 1.8. (что я и сделал, чтобы исправить мою проблему). В Rails 2 вы ДОЛЖНЫ иметь gem.config "haml" в вашей конфигурации.

Еще лучше, перейти к Rails 3 на Ruby 1.9!

0 голосов
/ 05 сентября 2009

Я столкнулся с той же проблемой, и мне пришлось перезапустить свой сервер после установки Haml, прежде чем мое приложение rails распознало изменения.

0 голосов
/ 03 сентября 2009

Обновлено - больше не актуально:

Я называю все мои файлы haml только .haml

Для иллюстрации:

test.haml
# not
test.html.haml

Обновление через 5 лет:

Я рекомендую назвать их «file.format.haml», потому что гораздо яснее, какой формат является результатом ...

0 голосов
/ 27 августа 2009

возможно, ваше имя файла неверно, если в конце index.html.haml_ есть пробел, rails будет неправильным ...

...