2012-11-17 3 views
0

Я создаю помощник в моем приложении rails, где я создаю ссылку для навигации. Теперь я хочу добавить каретку к этой ссылке, чтобы я мог получить красивую стрелу в конце.Rails inested html helper

Мой HTML должен выглядеть следующим образом:

<li class='dropdown'> 
    <a class='dropdown-toggle' data-toggle='dropdown' href='#' 
     Dropdown 
     <b class='caret'></b> 
    </a> 

Теперь я получил мою установку хелперов так:

content_tag(:li, class: 'active dropdown') do 
    link_to(text, link, class: 'dropdown-toggle') do 
     content_tag(:b, class: 'caret') 
    end 
    end 

Но когда я делаю это я получил сообщение об ошибке:

undefined method `stringify_keys' for "/":String 

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

Спасибо!

ответ

3

Вы передаете блок по адресу link_to, поэтому вы не должны передавать ему текст ссылки, как показано на рисунке in the docs. Попробуйте это:

content_tag(:li, class: 'active dropdown') do 
    link_to(link, class: 'dropdown-toggle') do 
    "#{text}#{content_tag(:b, "", class: 'caret')}".html_safe 
    end 
end 
+0

Почти там, но теперь он избегает HTML для каретки, я уже пробовал некоторые комбинации с html_safe, но без правильного результата. Любые другие предложения? – Niels

+0

О да. 'content_tag' нуждается в содержимом тега в качестве второго параметра, если нет блока, поэтому я добавил пустую строку. Как в стороне, рассмотрели ли вы использование селектора CSS: после CSS, чтобы прикрепить свою стрелку? –