nil的未定义方法`gsub':安装宝石后的NilClass

时间:2016-07-02 13:41:04

标签: ruby-on-rails ruby

安装一些宝石并从我的宝石文件中删除它后,我收到了这个错误

{{1}}

我的应用程序中的所有内容与添加宝石等之前完全相同。但我仍然收到此错误。我该怎么办?

3 个答案:

答案 0 :(得分:0)

图像或url方法可能在nil的对象上使用gsub。我会检查这两种方法的主体。

它可能与当前数据有关,而不是您删除的宝石。

另外,如果你从Gemfile中删除了gem,你是否再次运行bundle install?

答案 1 :(得分:0)

您可以尝试将其替换为:

<% if post.image && !post.image.url.nil? %>
  <%= link_to (image_tag post.image.url(:medium)), post %>
<% else %>
  <p> Image unavailable! </p>
<% end %>

答案 2 :(得分:0)

使用Rails便捷方法#try

<% if post.try(:image).try(:url) %>
  <%= link_to (image_tag post.image.url(:medium)), post %>
<% end %>

来自:https://github.com/rails/rails/blob/dd7d5b7c800b4f6d32747913fc7c8d00ce94f03a/activesupport/lib/active_support/core_ext/object/try.rb#L44

# +try+ calls can be chained:
#
#   @person.try(:spouse).try(:name)
#
# instead of
#
#   @person.spouse.name if @person && @person.spouse

注意:#try可以防止视图中出现错误,但不会修复ActiveRecord关联等潜在问题:post.whatever.whatever