0

所以我在rails 3.2上加载了一个带有图像的徽章

badges = [  {id: 1, name: 'Democratic-Society', description: "Voted for two bands", image: "demo_society2.gif"}
 ]

badges.each do |badge|
  Merit::Badge.create!(badge)
end

但我刚刚将我的代码服务器更新到 Rails 4.1 ......现在它给出了以下错误:

undefined method `image' for #<Merit::Badge:0x007f57949ba8f0>

我根本没有更改代码。没有触及优点初始化器......或application.rb......什么都没有。无法完全弄清楚为什么它不起作用。这是来自 application.rb 的代码:

<% current_user.badges.each do |badge| %>
<%= image_tag (badge.image), :alt => badge.description, :float => "left" %>
<% end %>

任何帮助,将不胜感激。

4

1 回答 1

1

好的解决方案(以防其他人遇到此问题)与“custom_fields”有关。任何自定义字段都必须这样引用(由于某种原因,您在 Rails 3.2 中并不真正需要这样做,但在 Rails 4.1 中需要这样做)

所以我所做的就是将代码更改为:

badges = [  {id: 1, name: 'Democratic-Society', description: "Voted for two bands", custom_fields: {image: "demo_society2.gif"} }]

然后在我看来:

<%= image_tag (badge.custom_fields[:image]), :alt => badge.description, :float => "left" %>

瞧!

感谢 github 上的 marcosgugs 提供的解决方案。

于 2014-04-15T16:17:15.190 回答