首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >html在link_to中被转义。

html在link_to中被转义。
EN

Stack Overflow用户
提问于 2011-04-11 17:52:54
回答 2查看 5.3K关注 0票数 1

我正在尝试实现一个链接,当单击时会将您标记为出席会议。此链接是帮助器中的方法:

代码语言:javascript
复制
  def link_to_remote_registration(event_id)
    down_image = "down_blanco.png"
    up_image   = "up_blanco.png"

    unless registration.nil?
      if registration.present == 1
        up_image = "up_filled.png"
      elsif registration.present == 0
        down_image = "down_filled.png"
      end
    end

    link_to_remote_registration = String.new 
    loading_and_complete = "Element.show('indicator_event_"+event_id.to_s+"'); Element.hide('vote_"+event_id.to_s+"')".html_safe
    complete = "Element.hide('indicator_event_"+event_id.to_s+"'); Element.show('vote_"+event_id.to_s+"')".html_safe

    link_to_remote_registration =
      link_to(image_tag(up_image , :id =>  'will_not_attend_event_'+ event_id.to_s , border => 0),
      :url =>  new_registration_path(:present  => 1, :event_id => event_id, :escape => false),
      :remote => true,
      :method => :put,
      :loading => loading_and_complete,
      :complete => complete)

    return link_to_remote_registration
  end

问题是,当我在我的视图中呈现链接时,一些html会逃脱,从而使链接无法工作。

代码语言:javascript
复制
<a href="/calendar?complete=Element.hide%28%27indicator_event_1%27%29%3B+Element.show%28%27vote_1%27%29&loading=Element.show%28%27indicator_event_1%27%29%3B+Element.hide%28%27vote_1%27%29&method=put&remote=true&url=%2Fregistrations%2Fnew%3Fevent_id%3D1%26present%3D1">
<img id="will_not_attend_event_1" border="0" src="/images/up_blanco.png?1198181114" alt="Up_blanco">
</a>

我认为这不是一个有效的url。我想知道为什么会发生这种情况-我在完整和加载字符串上调用html转义。

问候

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-11 21:44:24

由于您是从helper传递的html,因此Rails会对其进行清理以防止XSS。您可以通过返回以下内容来覆盖它:

link_to_remote_registration.html_safe

http://railscasts.com/episodes/204-xss-protection-in-rails-3

票数 8
EN

Stack Overflow用户

发布于 2012-03-06 21:43:04

您还可以使用raw(),而不是在系统范围内禁用XSS。

代码语言:javascript
复制
raw(image_tag(up_image , :id =>  'will_not_attend_event_'+ event_id.to_s , border => 0))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5619577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档