HTMLEntities与URI.escape在Ruby中解码字符串

时间:2012-12-02 17:31:20

标签: ruby-on-rails ruby ruby-on-rails-3 html-entities html-encode

背景:我希望解码包含HTML实体的字符串 - 即“c#”应转换为“c%23”。

我发现通常会推荐HTMLEntities项目,但我也发现了一个更简单的解决方案:使用CGI.escape(*string*)ERB::Util.url_encode(*string*)

问题:有什么理由为什么使用CGI.escape或ERB :: Util.url_encode这个任务是个坏主意?如果是这样,在Rails 3项目中如何实现HTMLEntities - 我似乎无法从文档中找到它!

1 个答案:

答案 0 :(得分:1)

我不确定每种方法的确切优点。但是,如果你想让htmlentities工作,你需要将以下内容添加到你的Gemfile中:

gem 'htmlentities', :git => "https://github.com/threedaymonk/htmlentities.git"

并运行:

bundle install

然后,在你的控制器中:

class TestController < ApplicationController

  def index 
    coder = HTMLEntities.new
    string = "<élan>" # or whatever string you want to manipulate
    @test = coder.encode(string) # => "&lt;élan&gt;"
  end 
end 

然后使用@test变量做任何你想做的事 - 在你的视图页等上写出来。