SingleRequests中的NoMethodError #create - 未定义的方法`[]'为零:NilClass

时间:2017-02-22 08:53:44

标签: ruby-on-rails-4

我在这个问题上坚持了很长时间 - 任何帮助都会受到赞赏!

我有一个控制器,我已经更新了CRUD类。

我也有新的视角,编辑和显示。每个调用一个表单,该表单验证表单中4个细节中的2个的存在。我还有一个为set_associate数据创建的私有类(如控制器图片中所示)。

我在新方法中调用了它。表单已保存,但我无法再次编辑表单。此外,如果缺少任何一个必要字段 - 我收到错误:

  SingleRequests中的

NoMethodError #create - undefined method` []'为零:NilClass

The Controller with all the methods and the private class for set_associate

表单(在新的,显示和编辑视图中调用)如下 - 它还包含验证错误消息部分(部分不工作并在必要字段为时抛出给定错误没有填写

Form which also contains the validation of components

1 个答案:

答案 0 :(得分:0)

您的观点期望@associate_data是一个哈希值,但在新方法上它只是零。

您可以更改set_associate方法来处理此问题。

def set_associate
  @associate_data = session[:associate] || {associate_id' => ''}
end

因此,如果会话变量不可用,您将默认使用只有'associate_id'且空字符串的哈希。

事实上,您可以@associate_data = session[:associate] || {},但是您必须修改视图行...

...@associate_data['associate_id'][2..-1]

...@associate_data['associate_id'].to_s[2..-1]

处理键/值对中的nil值的情况。

如果您必须重新呈现set_associate表单,请不要忘记您可能需要在create方法中运行new

else
  set_associate
  render :new
end