2016-08-10 3 views
-1

@ link.userを作成しようとしていますが、この未定義メソッドのエラーが表示され続けます。すべてそれ自体でNoMethodError:定義されていないメソッド `user 'for nil:NilClass

irb(main):002:0> @link.user 

NoMethodError: undefined method user' for nil:NilClass from (irb):2 from c:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.2.5.1/lib/rails/commands/console.rb:110:in start' from c:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.2.5.1/lib/rails/commands/console.rb:9:in start' from c:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.2.5.1/lib/rails/commands/commands_tasks.rb:68:in console' from c:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.2.5.1/lib/rails/commands/commands_tasks.rb:39:in run_command!' from c:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.2.5.1/lib/rails/commands.rb:17:in ' from bin/rails:4:in require' from bin/rails:4:in '

マイuser.rb

class User < ActiveRecord::Base 
    devise :database_authenticatable, :registerable, 
      :recoverable, :rememberable, :trackable, :validatable 

    has_many :links 
end  

マイlink.rb

class Link < ActiveRecord::Base 
    belongs_to :user 

    def show 
    end 

end 
+1

設定されていないレールコンソールからインスタンス変数の値をチェックしようとしているようです。おそらく、あなたは、レールコンソールから新しいリンクオブジェクトを作成し、それを変数に保存して、それが正しく関連付けられていることを確認する必要があります。例: 'user = User.first'(データベースにすでにユーザがいれば、それを作成しないと仮定します)次に、リンクを作成するには 'user.links.create!(link_params)'を使用します。あなたのモデルの特定のパラメータで 'link_params'と書かれています – Jarrel09

+1

@linkはnilですが、どのように変数をインスタンス化していますか? – fanta

答えて

0

@linkだけで、不特定のインスタンス変数であり、常になりますnil o @link.anythingはあなたに与えますundefined method 'anything' for nil:Nilclass

最初に何かを含めるように@linkを設定します。

@link = Link.new 

@link.userあなたはまだLinkオブジェクトにユーザを割り当てていないとして、それがnilになりますが、その後、動作します。

+0

と私はどのようにリンクオブジェクト/ファイルにユーザーを割り当てると言うでしょうか? –

+0

現在のユーザーの場合は... '@link.user = current_user' – SteveTurczyn

関連する問題