ActionView :: Template :: Error(没有将nil隐式转换为String)

时间:2014-05-29 18:27:38

标签: ruby-on-rails ruby ruby-on-rails-4

我以前从来没有遇到这样的错误,也不确定如何摆脱它。

ActionView::Template::Error (no implicit conversion of nil into String)
...
24: <p>Genre:<%= link_to @movie.genre, "movies?genre=" + @movie.genre.to_s %></p>
....
app/views/movies/show.html.erb:24:in `+'

2 个答案:

答案 0 :(得分:2)

您需要能够处理可能的nil值。将您的代码更改为:

<p>Genre:<%= link_to @movie.try(:genre), "movies?genre=" + @movie.try(:genre) %></p>

由于整个链接取决于具有类型,您甚至可以这样做:

<p>Genre:<%= link_to @movie.try(:genre), "movies?genre=" + @movie.try(:genre) if @movie.genre %></p>

答案 1 :(得分:1)

可能@movie.genre是零。

所以,当你尝试@movie.genre.to_s时,你实际上是这样做的:

nil.to_s

无法做到。

所以你应该这样做:

<% if @movie && @movie.genre %>
  <p>Genre:<%= link_to @movie.genre, "movies?genre=" + @movie.genre.to_s %></p>
<% end %>