2013-09-11 5 views
0

После того, как кто-то указал link_to_unless_current, я хотел бы применить его к боковой панели боковой панели. Однако я не могу заставить его работать, поэтому я предполагаю, что я делаю что-то неправильно.Не удается получить link_to_unless_current для работы

Это моя текущей врезка

.dashboard_bar 
    %ul 
    = link_to admin_dashboard_path do 
     %li.icon-dashboard 
    = link_to admin_cs_dashboard_path do 
     %li.icon-heart 
    = link_to admin_dashboard_path do 
     %li.icon-money 
    = link_to admin_dashboard_path do 
     %li.icon-group 
    = link_to admin_dashboard_path do 
     %li.icon-bug 
    = link_to admin_dashboard_path do 
     %li.icon-hdd 

Когда я изменить link_to к link_to_unless_current, это только винтам моего CSS и иконки больше не кликабельны.

Может кто-нибудь просветить меня о том, как это исправить?

P.S. Я проверил Rails guide на этом, но все еще не могу понять.

+0

Вы должны предоставить каждому контроллеру 'link_to_unless_current' и действию, в котором эта ссылка будет работать. Не так ли? –

+0

Нет, я не делал никаких действий. Я относительно новичок в Rails (и Ruby), поэтому я подумал, что могу просто заменить link_to на link_to_unless_current. Думаю, я еще немного поучусь! – Rvervuurt

ответ

0

Наиболее вероятная причина в том, что вы находитесь на том же URL-адресе, что и admin_dashboard_path. Таким образом, все ваши ссылки отключены и показаны как текст.

+0

Я убедился, что я не был, но только для целей тестирования, я изменил другие ссылки на «#». Собираюсь ответить на мой собственный вопрос. – Rvervuurt

0

Хорошо, после того, как сесть с кем-то, кто знает больше о Rails, мы пришли к следующему решению:

.dashboard_bar 
    %ul 
    %li 
     = link_to_unless_current '', admin_dashboard_path, :class => "icon-dashboard" do 
     %span.icon-dashboard 
    %li 
     = link_to_unless_current '', admin_cs_dashboard_path, :class => "icon-heart" do 
     %span.icon-heart 
    %li 
     = link_to_unless_current '', "#", :class => "icon-money" do 
     %span.icon-money 
    %li 
     = link_to_unless_current '', "#", :class => "icon-group" do 
     %span.icon-group 
    %li 
     = link_to_unless_current '', "#", :class => "icon-bug" do 
     %span.icon-bug 
    %li 
     = link_to_unless_current '', "#", :class => "icon-hdd" do 
     %span.icon-hdd 

Основная проблема заключалась в том, что ссылки были вокруг li, в то время как они должны быть внутри li , С применением класса к ссылке с :class => "icon-*" и до span нам удалось создать внешний вид и функциональность, которые я искал.

Как только link_to_unless_current видит, что я нахожусь на текущей странице этой ссылки, он меняет ссылку на диапазон, создавая возможности использовать css для значков как для текущей страницы, так и для других ссылок.

0

Передача блока до #link_to_unless_current не ведет себя как проход блока до #link_to: используется содержимое блока as an alternative content if link is indeed current path.

Итак, когда вы пишете:

= link_to admin_dashboard_path do 
    %li.icon-money 

То, что вы на самом деле сказать: сделать ссылку на admin_dashboard_path с нулевыми именем. Но если это текущий путь, вместо этого напишите <li class="icon-money">.

Если вы хотите, чтобы достичь того, чего вы хотите (элемент списка внутри ссылки), вы должны пойти что-то подобное, а:

= link_to_unless_current '<li class="icon-money"></li>'.html_safe, admin_dashboard_path 

Это является довольно странным в файле Haml, лучшим решением является, вероятно, держите свои ссылки внутри ваших элементов списка.

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