Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 仅当字符串为HTML编码时解析_Ruby On Rails_Ruby_Ruby On Rails 3_Nokogiri - Fatal编程技术网

Ruby on rails 仅当字符串为HTML编码时解析

Ruby on rails 仅当字符串为HTML编码时解析,ruby-on-rails,ruby,ruby-on-rails-3,nokogiri,Ruby On Rails,Ruby,Ruby On Rails 3,Nokogiri,在某些情况下,我在数据库列中接收HTML编码的信息,在其他一些情况下,我接收常规文本 我有以下代码: my_string = Nokogiri::HTML.parse(my_string).text 如果my_string是HTML编码的,则此选项有效,但如果它是常规文本,则不起作用 是否有办法执行以下检查 如果是html_编码的,Nokigiri::html.parse否则只需按原样返回我的_字符串 我开始觉得Rails处理这个问题很奇怪。这是我的型号代码: def show_name

在某些情况下,我在数据库列中接收HTML编码的信息,在其他一些情况下,我接收常规文本

我有以下代码:

my_string = Nokogiri::HTML.parse(my_string).text
如果
my_string
是HTML编码的,则此选项有效,但如果它是常规文本,则不起作用

是否有办法执行以下检查

如果是html_编码的,Nokigiri::html.parse否则只需按原样返回我的_字符串

我开始觉得Rails处理这个问题很奇怪。这是我的型号代码:

  def show_name
    name = Nokogiri::HTML.parse(name).text
    name
  end
以下是我的查看代码:

  <tbody>
    <% names.each do |t| %>
      <tr class="<%= return_cd_error?(t.show_return_cd) ? 'error' : '' %>">
        <td><%= t.name %></td>
      </tr>
    <% end %>

但是,如果我删除Nokogiri解析代码,它会显示良好。

没有定义什么是HTML编码的,什么不是HTML。在XML中有定义嵌入标记的方法,但在HTML中没有

相反,您可以嗅探文本并确定是否存在编码前缀,例如“&#”,或者,不必在意,只需对其进行解码即可


Nokogiri可以解码编码的HTML,但它不是我第一个解码它的工具。相反,Ruby的CGI标准库中类似于
CGI::unescapeHTML(str)
的东西可以做到这一点。有关详细信息,请参阅“”。

如果是常规文本,则定义
无效,您有什么错误或意外输出?我们需要您看到的HTML的一个最小示例来说明问题。换句话说,什么是
my_string
?我看到的html是:%;B5463453593和x005E;测试/;客人L^;345353536563535在你的问题或答案中,没有必要或特别需要添加“编辑”或“更新”类型标记。如果需要,我们可以看到什么改变了。相反,将您的更改合并到文本中,就像您最初输入的一样。
[2] pry(#<Test::Sess>)> name
=> "Hugh Geissler"
[3] pry(#<Test::Sess>)> name =  Nokogiri::HTML.parse(name).text
=> ""