我以前从来没有遇到这样的错误,也不确定如何摆脱它。
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 `+'
答案 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 %>