【问题标题】:Object is all nil in Rails 4+?Rails 4+中的对象全部为零?
【发布时间】:2016-11-18 09:45:53
【问题描述】:

我的视图中的“欢迎”文件夹下有一个“landing.html.erb”。在 WelcomeController 中,我有以下内容:

def landing
@quiz = Quiz.new
end

创建一个新的测验。当用户点击创建按钮时,

def create
@quiz = current_user.quiz.build(quiz_params)
if @quiz.save
  flash[:success] = "Updated"
  redirect_to @quiz
else
  render 'new'
 end
end

def quiz_params
 params.require(:quiz).permit(:q1)
end

是我为 QuizzesController 提供的代码。但是,这给出了错误:

undefined method `build' for nil:NilClass

特别是在行

@quiz = current_user.quiz.build(quiz_params)

我运行 rails 控制台并输入 Quiz.new,它会将每个字段都显示为“nil”,我不完全确定需要修改什么,希望得到指导。

测验模型属于_to用户。 用户 has_one 测验。

非常感谢。

【问题讨论】:

  • 如果有 has_one 关联,您需要使用 current_user.build_quiz(quiz_params)。
  • 如果你不介意的话,我会放上详细的答案。
  • @power 没问题!

标签: ruby-on-rails ruby ruby-on-rails-4 model-view-controller models


【解决方案1】:

在这里,我假设您在用户和测验之间有 has_one 关联。 因此,要构建关联对象,您需要使用以下代码。

current_user.build_quiz(quiz_params)

这将构建quiz对象,其中user_id字段包含当前用户的id和根据quiz_params的其他字段。

【讨论】:

    猜你喜欢
    • 2018-02-26
    • 2015-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    相关资源
    最近更新 更多