2016-09-14 54 views
0

我目前正在關注YouTube上的recipe box教程。 當我打開軌道控制檯,然後輸入Ruby on Rails中的局部變量未定義

@recipe = current_user.recipes.build 

我得到了以下錯誤:

NameError: undefined local variable or method `current_user' for main:Object 
from (irb):3 
from /Users/matthiascordes/.rvm/gems/ruby-2.3.1/gems/railties-5.0.0.1/lib/rails/commands/console.rb:65:in `start' 
from /Users/matthiascordes/.rvm/gems/ruby-2.3.1/gems/railties-5.0.0.1/lib/rails/commands/console_helper.rb:9:in `start' 
from /Users/matthiascordes/.rvm/gems/ruby-2.3.1/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:78:in `console' 
from /Users/matthiascordes/.rvm/gems/ruby-2.3.1/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:49:in `run_command!' 
from /Users/matthiascordes/.rvm/gems/ruby-2.3.1/gems/railties-5.0.0.1/lib/rails/commands.rb:18:in `<top (required)>' 
from bin/rails:9:in `require' 
from bin/rails:9:in `<main>' 

有誰有一個想法,什麼是錯的,我怎麼能解決這個問題? 我正在爲我的用戶模型使用設計寶石。

回答

3

您無法訪問您的current_user鐵軌控制檯內部,所以儘量

user = User.find(your_user_id) 
user.recipes.build 
+0

好的,我會試試看。我在哪裏必須添加這些行? –

+0

在你的rails控制檯裏面,因爲你試圖訪問控制檯內的current_user,因爲你需要一個用戶來執行一些操作,例如你可以這樣做,'user = User.find(id)',現在你有一個用戶執行某些操作 –

0

在軌控制檯無法訪問current_user。 如果你希望用戶變量,然後搜索它像

user = User.find(some_id) 

&然後使用它像user.recipes.build 你也可以從軌控制檯的用戶喜歡user = User.create(user parameters) &然後用它建立receipies

1

CURRENT_USER是由devise的before_filters之一提供的一個變量,因此,在控制器之外您無法訪問它,如果您仍然想要處於該上下文中,則可以使用gem byebug並刪除byebug在你的代碼裏面,或者調試器並且執行會停下來,你將會在你需要的範圍內,來測試你所需要的,否則,你需要取回用戶舊的方式,用查詢

User.find(user_id) 
相關問題