2016-09-14 56 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) 
相关问题