2017-09-13 64 views
0

我在rails上得到这个错误。我制作了一个名为Style的脚手架,它有一个标题和一个描述(字符串和文本),一个用户会话和红宝石宝石设计以及一个叫做类别的模型,我用add_category_id_to_styles添加了样式。 我改变了StylesController中的NoMethodError#新的未定义方法`样式'为零:NilClass

def new 
@style = Style.new 
end 

def new 
@style = current_user.styles.build 
end 

在样式控制器,现在它给我的无未定义的方法“风格”:NillClass。你们有没有人知道为什么给我这个错误?

+0

current_user将为空,直到您登录。 –

+0

我应该做一个条件吗?谢谢 – marcos

+0

在这种情况下,current_user为空。这意味着你没有登录。是的,你可以检查'如果current_user.present?' –

回答

0

Devise为您提供方法#user_signed_in?来检查当前用户是否登录。如果是,那么您有权访问#current_user。所以,你可以有:

def new 
    @style = user_signed_in? ? current_user.styles.build : Style.new 
end 

当然你也可以检查current_user.present?直接太多,但我认为#user_signed_in?传达的意图更好。

相关问题