2012-02-17 23 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を追加します。 classesArrayをしているのはなぜ

また、あなたはとても

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

ニースのリファクタリングが、タグは、まだ救出tothe .. – Trip

+0

Content_Tag剥奪を受けることにこれを書きます!本当にありがとうJesse! – Trip

1

のようなタグを作成することができますか? 私は

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 
関連する問題