0

ユーザーモデルとストレングスモデルがあります。ユーザーには多くの強みがあり、ユーザーの first_name と電子メールを表示する Active_Admin で、Strengths 用の管理パネルを構築しようとしています。開発中は完全に機能しますが、Heroku にプッシュすると、次のメッセージが表示されます。

ActionView::Template::Error (undefined method `first_name' for nil:NilClass):
app/admin/strengths.rb:5:in `block (3 levels) in <top (required)>'

これは私がこれまでに開発で動作するものです:

app > admin > strengths.rb
ActiveAdmin.register Strength do
  index do
    column "Strength ID", :id
    column "Name" do |i|
        i.user.first_name
    end
    column "Email" do |i|
        i.user.email
    end
    column :producer
    column :versatility
        default_actions
  end
end

本番環境ではエラーが発生するが、開発環境ではエラーが発生しない理由はありますか?

4

1 に答える 1

1

これは、強みモデルに記録がないために発生する可能性があります。

first_name 列と last_name 列に if 条件を追加してみてください。

column "Name" do |i|
    i.user.first_name if i.user.present? 
end

これにより、レコードが存在しない場合のエラーが回避されます。

于 2013-08-03T07:31:15.197 に答える