railsのfile_columnは便利だが一覧表示の各行で画像を表示しようとしてurl_for_file_columnを使うとエラーになる。
<% @memo.each do |memo| -%>
<tr>
<td><%= memo.title %></td>
<td><%if memo.image? %><img src="<%= url_for_file_column("memo", "image") %>")<%end%> </td>
</tr>
<% end -%>
具体的にはこんな感じ。
You have a nil object when you didn't expect it!
The error occurred while evaluating nil.image_relative_path
他の人は悩んでないので解決策があるのはわかっていたが、2日ほどはまった。
原因
url_for_file_columnメソッドはインスタンス変数対象じゃないと使えません。
# プラグインの公式のページの下のほうに英語で書いてあった気がする
解決方法
繰り返し操作の冒頭でローカル変数をインスタンス変数にぶち込みましょう。
そして、そのインスタンス変数を対象にurl_for_file_columnを使ってください。
<% @memo.each do |memo| -%>
<% @memo_image=memo %>
<tr>
<td><%= memo.title %></td>
<td><%if memo.image? %><img src="<%= url_for_file_column("memo_image", "image") %>")<%end%> </td>
</tr>
<% end -%>
コメント