我在这个问题上坚持了很长时间 - 任何帮助都会受到赞赏!
我有一个控制器,我已经更新了CRUD类。
我也有新的视角,编辑和显示。每个调用一个表单,该表单验证表单中4个细节中的2个的存在。我还有一个为set_associate数据创建的私有类(如控制器图片中所示)。
我在新方法中调用了它。表单已保存,但我无法再次编辑表单。此外,如果缺少任何一个必要字段 - 我收到错误:
SingleRequests中的NoMethodError #create - undefined method` []'为零:NilClass
表单(在新的,显示和编辑视图中调用)如下 - 它还包含验证错误消息部分(部分不工作并在必要字段为时抛出给定错误没有填写)
答案 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