ссылка CSS-файла на шаблон макета Haml

#html #css #ruby-on-rails #haml

#HTML #css #ruby-on-rails #haml

Вопрос:

Я пытаюсь связать css файл с haml шаблоном макета

У меня есть метод ApplicationHelper для создания правильного html

 module ApplicationHelper

  def styletag(sheet_name)
    "<link rel='stylesheet' href='/assets/stylesheets/#{sheet_name}.css'>"
  end

end
  

а также ссылка на шаблон макета

 !!! 5
%html
  %head
    %title Rotten Potatoes!
    = stylesheet_link_tag 'application'
    = styletag 'default'
    = javascript_include_tag 'application'
    = csrf_meta_tags
  %body
    = yield
  

но, похоже haml , он не рассматривает его как тег и отображается как текст.

Комментарии:

1. Зачем вы это делаете? У Rails уже есть помощник для этого, он прямо над строкой, на которую вы ссылаетесь : stylesheet_link_tag . Вам действительно не следует писать для этого свой собственный помощник, конвейер ресурсов сложнее, чем вы, кажется, понимаете, и ваш помощник выйдет из строя странным образом.

2. Несмотря на мой ответ ниже, если это действительно все, что вам нужно сделать, вы должны использовать stylesheet_link_tag, как указано в @meagar. Тем более, что он будет правильно работать с конвейером ресурсов

3. @meagar вы правы, но у меня проблема, если я использую неверный путь ‘stylesheet_link_tag’ и возвращается 404 not found, даже если файл находится в правильной папке

Ответ №1:

Вам нужно добавить html_safe. Rails по умолчанию экранирует html в вашем тексте, поэтому вам нужно сообщить rails, что он не должен этого делать.

См. http://apidock.com/rails/ActionView/Helpers/AssetTagHelper/stylesheet_link_tag и нажмите «Показать источник», если вы измените его на этот:

 def styletag(sheet_name)
    "<link rel='stylesheet' href='/assets/stylesheets/#{sheet_name}.css'>".html_safe
end
  

это должно сработать для вас