我是Rails的新手,请原谅如果已经回答,我可能没有理解这个问题的答案。
我正在尝试在我的主页上呈现约会列表,当我转到/appointments
时,我可以正确地列出列表但不是在我尝试在另一个控制器中呈现索引操作时。
我的静态控制器
def home
render "appointments/index"
end
我的约会控制员
def index
@appointments = Appointment.all
end
我得到以下错误“未定义的方法`每个'为nil:NilClass” 我理解这是因为@appointments为零,但我如何解决这个问题,以便@appointments不会保持为零。
感谢您输入。
答案 0 :(得分:2)
您告诉home
操作只是为了在index
目录中呈现appointments
视图,但您没有提供@appointments
视图所需的index
render "appointments/index"
不会在控制器内调用index
操作。
您可以使用
您的主页操作中@appointments = Appointment.all
,以便在index
视图
def home
@appointments = Appointment.all
render "appointments/index"
end
或只是在您调用home
操作
def home
redirect_to {controller: "appointments", action: "index"}
end
答案 1 :(得分:0)
这是因为您的Appointment表在数据库中没有任何数据。您可以通过在该模型中插入数据来修复它,或者您可以使用.present?
def index
if @appointments = Appointment.all.present?
render "appointments/index"
else
#render no result page
end
end
答案 2 :(得分:0)
渲染 - 只需渲染您指定的模板。如果要从另一个控制器操作渲染模板,则必须提供该模板所期望的实例变量。在这种情况下,变量是@appointments。在渲染模板之前将数据提取到此变量中。
希望我回答你的问题。