【问题标题】:Rails 3.1 html_safe (+ combo of string data) - making controller action fire twice?Rails 3.1 html_safe(+字符串数据组合) - 使控制器动作触发两次?
【发布时间】:2012-01-19 01:51:30
【问题描述】:

过去两天我一直在努力解决这个问题,我终于缩小了来源。

我正在使用帮助程序为我的侧边栏生成 html,并在返回值上使用 html_safe。当我以正确的方式构建 html 时,它会导致我的控制器操作触发两次(当我从我的操作中将两条记录插入到我的数据库中时,我首先看到它,然后我使用 ruby​​-debug 进行了验证)。这是帮助代码:

def get_sidebar

  first = String.new
  second = String.new
  str = String.new

  str+= "<a href=''><img src='" << first << second << "'></a>"

  str.html_safe

end

如果我修改 str 并从 concat'd vars 之前和之后删除 img 标签,它只会触发一次。如果 concat 的 var 不为空,它只会触发一次(这些最初来自不可为空的 db 列,但为空字符串)。如果我不调用 html_safe 方法,它只会触发一次......

有什么想法吗?这是 html_safe 的预期行为吗?我疯了吗?

提前致谢!

【问题讨论】:

    标签: ruby-on-rails-3


    【解决方案1】:

    使用 content_tag 而不是 html_safe

    【讨论】:

    • 感谢您的帮助。知道为什么该动作会触发两次吗?当字符串格式不正确时,这似乎是一种奇怪的行为。
    • 您使用的视图生成器是什么?哈姆尔?
    • 只是 Rails 3.1 中的默认 erb 视图。
    【解决方案2】:

    当用户的浏览器加载包含该字符串的页面时,会发生什么?它必须返回服务器才能获取图像。两个请求。听起来您的图片 URL 实际上是 Rails 请求。

    如果不使用 html_safe 将字符串标记为安全,则图像标签将被转义,浏览器不会返回服务器。

    【讨论】:

      猜你喜欢
      • 2021-02-13
      • 2010-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多