#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
это должно сработать для вас