Tag: 侧边栏

单击#new&#edit时如何停止NoMethodError?

我很难弄清楚如何将多个控制器的逻辑合并到侧边栏中。 例如,我想在侧边栏中有一个部分,它使用@habits逻辑和一个使用来自goals_controller的@unaccomplished_goals逻辑的部分。 对于这个问题,我们只关注@unaccomplished_goals 。 在应用程序的侧边栏中正确显示,它来自goals_controller #index @top_3_goals = @unaccomplished_goals.top_3 但是如果我点击链接目标/ new或目标/ 1 /编辑我得到可怕的: undefined method each for nil:NilClass ! 这是一个视图细分: 我在views/layouts/application.html.erb使用来抓取views/sidebar/_sidebar.html.erb ,以便使用来抓住views/goals/_upcoming.html.erb 意见/目标/ _upcoming.html.erb 视图/侧边栏/ _sidebar.html.erb Upcoming 目标控制器 def index if params[:tag] @goals = Goal.tagged_with(params[:tag]) else @goals = Goal.all.order(“deadline”) @accomplished_goals = current_user.goals.accomplished @unaccomplished_goals = current_user.goals.unaccomplished @top_3_goals = @unaccomplished_goals.top_3 end end 目标模型 class Goal { where(accomplished: […]