2012-02-17 62 views
0

我被困在試圖讓這個幫手正常工作。這是我的,但它肯定不起作用。如何防止Rails助手中的標籤消毒?

def registration_link step, step_number 
    path = registration_path step 
    classes = [] 
    classes << 'current' if current_step?(step) 
    # how do I add the following line to appear before the link ? 
    step_icon = "<span class='step_number'>#{step_number}</span>" 
    link_to step_icon + t("registration.menu.#{step}"), path, :class => classes.join(' ') 
end 

我試圖讓step_iconlink_to內,並通過t("registration.menu.#{step}")

看來我有時會在那裏得到所生成的詞前出現,但標籤<>的消毒以及..

任何想法?

回答

1

的link_to可以接受塊鏈接,通常像這樣:

link_to @account do 
    image_tag @account.image.url 
end 

所以,你可以(可能需要重構):

link_to path, :class => classes.join(' ') do 
    "<span class='step_number'>#{step_number}</span>" + t("registration.menu.#{step}") 
end 

渲染你的字符串作爲HTML,而不是逃脫字符串,你在添加.html_safe之後。

或者,你可以創建一個像這樣

content_tag(:span, step_number, :class=>"step_number") 
+0

尼斯重構,但仍標籤獲得剝奪.. – Trip 2012-02-17 17:00:18

+0

Content_Tag tothe營救!非常感謝傑西! – Trip 2012-02-17 17:04:22

1

標籤爲什麼classes是一個Array? 我會寫這一點,

def registration_link step, step_number 
    css_class = if current_step?(step) then 'current' else '' end 
    link_to registration_path(step), :class => css_class do 
    content_tag(:span, step_number, class: 'step_number') + t("registration.menu.#{step}") 
    end 
end