【问题标题】:How do you prevent sanitization of tags in a Rails helper?你如何防止在 Rails 助手中清理标签?
【发布时间】:2012-02-17 16:51:04
【问题描述】:

我一直试图让这个助手正常工作。这是我所拥有的,但它肯定不起作用。

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_icon 出现在link_to 中和t("registration.menu.#{step}") 生成的单词之前

似乎我有时可以进入那里,但标签 &lt;&gt; 也被清理了..

有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails helper


    【解决方案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")
    

    【讨论】:

    • Content_Tag 来救援!非常感谢杰西!
    【解决方案2】:

    为什么classesArray? 我会这样写

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-21
      • 1970-01-01
      相关资源
      最近更新 更多