2016-03-02 3 views
1

Это, вероятно, должно быть проще, чем есть. Я просто хочу поместить ссылку внутри элемента абзаца HTML.Как я могу поместить ссылку внутри текстовой строки в HAML?

%p{class: "answer"}="Please upload your data to this portal in text (tab-separated) format. Download our template #{raw(link_to 'here', '/templates/upload_template.xlsx')} for sample data and a description of each column." 

Rails кодирует информацию о теге. Я не хочу, чтобы теги были закодированы. Я хочу, чтобы они были тегами.

ответ

2

Вы можете использовать interpolation directly in Haml, и делает это, кажется, решить проблему в этом случае.

Так вместо того, чтобы сделать это:

%p= "Text with #{something_interpolated} in it." 

вы можете просто сделать

%p Text with #{something_interpolated} in it. 

т.е. вам не нужны = или кавычки, так как вы просто добавить одну строку. Вам также не нужно использовать raw.

(Кроме того, обратите внимание, что вы можете сделать %p.answer установить атрибут class, который может быть чище, если значение не устанавливается динамически.)


Почему это время убежали здесь является другой пункт. Я бы ожидал, что два случая (%p= "#{foo}" и %p #{foo}) будут вести себя одинаково. Однако после небольшого исследования это поведение похоже на то, как Rails ведет себя с Erb.

3

Вы можете использовать более одной строки внутри любого блока, чтобы решить вашу проблему, мы будем иметь что-то вроде этого:

%p{class: "answer"} 
    Please upload your data to this portal in text (tab-separated) format. Download our template 
    = link_to 'here', '/templates/upload_template.xlsx' 
    for sample data and a description of each column." 
+0

И хотя мы находимся в этом, мы могли бы поддержать синтаксис 'p.answer'. Намного лучше, чем '% p {class:" answer "}' – froderik

Смежные вопросы