2016-12-15 97 views
0

每当我提交表单时,我得到这个错误:undefined method `each' for nil:NilClass。如果一切正确,我可以毫无问题地提交表单,但是当有一件事情丢失时,它会给我提供那个错误。该错误将我这一行:Ruby on Rails - 未定义的方法`each'for nil:NilClass

的意见/用户/ new.html.haml

- @subscriptions.each do |fbs| 
    = fb.radio_button :subscription_id, fbs.id, class: 'radiobtn', required: true 

控制器/ users_controller.rb

def new 
    @user = Users::Business.new 
    @subscriptions = Businesses::Subscription.all 
end 

def create 
    @user = Users::Business.new(user_params) 

    if @user.save 
    sign_in(@user) 
    else 
    render :new 
    end 
end 
+0

提交表单会调用控制器的'create'动作,它看起来像什么?我怀疑你调用'render“new并且不要设置'@ subscriptions'。 – Stefan

+0

您是否在Rail控制台中有一些关于TopLevel常量的不推荐使用的警告?如果是,请尝试使用@subscriptions = :: Businesses :: Subscription.all – cubbiu

+0

感谢您的编辑。就像我怀疑的:你在'create'中渲染'new'模板,但是你不会根据模板的要求设置'@ subscriptions'。 – Stefan

回答

2

分配订阅在创建操作太:

before_filter :set_subscriptions, only: %w(new create) #for edit and update if needed 

private 
def set_subscriptions 
    @subscriptions = Businesses::Subscription.all 
end 

或者保存失败,你重新呈现new表格后添加@subscriptions = Businesses::Subscription.all直接create行动。

0

它正在发生的事情,因为没有价值坚持用那个模型。 您可以检查数据为rails console 一样,

$rails console 
> Businesses::Subscription.count 

如果你看到没有数据,那么你可以写一个if ... end块检查空值和处理。

+0

'Businesses :: Subscription.all'永远不会返回'nil'。 – Stefan

+0

你能给我们错误日志吗? –

+0

我同意斯蒂芬。它返回空关系,而不是零 – cubbiu

相关问题