实例变量未在Rails 4中设置

时间:2014-05-12 21:38:45

标签: ruby-on-rails

我在使用Rails 4应用程序时出现问题。现在,实例变量在设置后仍为零。在控制器中,我有以下代码:

def create
  @reportdate = Reportdate.new(reportdate_params)
  weekly_summary = getSOData(@reportdate.start_date, @reportdate.end_date)
  @reportdate.questions = weekly_summary[:question_ids]
  @reportdate.num_answers = weekly_summary[:answers]
  @reportdate.views = weekly_summary[:views]
  respond_to do |format|
  if @reportdate.save
  ...

运行时,@reportdate.num_answers@reportdate.views已设置,但@reportdate.questions仍为nil

当我在调试器中运行它时,我确认weekly_summary[:question_ids]等于

[21636454, 21539706, 21611661, 21632781, 21583630, 21614059, 21634704, 21615609, 21595829, 21564079, 21587196, 21537280]

之前曾经工作,我不知道它为什么现在不工作。

2 个答案:

答案 0 :(得分:0)

def create
  @reportdate = Reportdate.new(reportdate_params)
  weekly_summary = getSOData(@reportdate.start_date, @reportdate.end_date)

  @reportdate.questions   = weekly_summary[:question_ids]
  @reportdate.num_answers = weekly_summary[:answers]
  @reportdate.views       = weekly_summary[:views]

  respond_to do |format|
      if @reportdate.save
         ...

我认为答案超出了控制器的范围。我更改了上面的内容以反映操作中使用的数据,正如您所看到的,您接收数据的主要方式来自weekly_summary方法

我会查看这些:

  1. weekly_summary是否正确填充变量?
  2. .questionsReportdate对象的属性吗?如果没有,你有attr_accessor吗?
  3. 您的Reportdate对象需要CamelCase - 应为ReportDate(这可能会导致问题)
  4. 如评论中所述,您的模型可能会因验证问题而无法保存。

  5. 所有这些都指向应用程序的其他部分有问题

    您可以发布Reportdate模型和weekly_summary代码吗?

答案 1 :(得分:0)

谢谢大家的回复。问题是我错误地设置了实例变量。我没想到我在代码的那一部分做了改变,但它不可能按照它的编写方式工作,所以我必须有。现在一切都已修好并正常工作。