无法将nil转换为String

use*_*884 9 ruby string null

我不知道Ruby,但我的应用程序遇到了这个问题.有人可以帮帮我吗?

第7行上的ActionView :: TemplateError(无法将nil转换为String)

4:  <h3><span><%= opinion.opinion %></span>: <%= opinion.keywords.sort.join(' / ').upcase %> </h3>
5:  <div class="original">Estado original: <span class="pos"><%= opinion.opinion %></span></div>
6:  <%#= highlight(simple_format(highlight_ontology(opinion)), opinion.keywords, :highlighter => '<em>\1</em>') %>
7:  <%= simple_format(highlight_ontology(opinion)) %>
8:  <%= button_to_remote('POSITIVO', {:url => url_for(opinion), :method => :put, :with => '"opinion[opinion]=POSITIVE"' }, :class => :positive) %>
9:  <%= button_to_remote('OBJETIVO', {:url => url_for(opinion), :method => :put, :with => '"opinion[opinion]=OBJECTIVE"' }, :class => :objective) %>
10: <%= button_to_remote('NEGATIVO', {:url => url_for(opinion), :method => :put, :with => '"opinion[opinion]=NEGATIVE"' }, :class => :negative) %>
Run Code Online (Sandbox Code Playgroud)

谢谢!

Emy*_*myr 17

使用(variable || "")而不仅仅是变量应该使它默认为空字符串.

此技术称为null(或nil)合并.

  • 我更喜欢`variable.to_s`. (5认同)
  • @ adamwong246我会质疑相反的情况.由于`NilClass`定义`to_s`,为什么它不能转换为字符串?答案是因为它没有定义`to_str`.这就是"#{nil}"工作原因和"#{''+ nil}"导致上述错误的原因 (2认同)
  • 支持`variable.to_s`。`"abc".to_s` 得到 `"abc"`,`nil.to_s` 得到 `""`。 (2认同)