gpt4 book ai didi

ruby-on-rails - 页面中没有方法错误#home

转载 作者:行者123 更新时间:2023-12-03 00:32:05 24 4
gpt4 key购买 nike

我正在阅读railtutorial.org 在线书籍中关于rails 3 的内容。我已经完成了第 11 章的大部分内容,其中我们添加了提交微帖子的功能。添加适当的代码后,我无法呈现页面。以下是返回的错误:
>

NoMethodError in Pages#home

Showing c:/rails_projects/sample_app/app/views/shared/_error_messages.html.erb where line >#1 raised:

You have a nil object when you didn't expect it! You might have expected an instance of ActiveRecord::Base. The error occurred while evaluating nil.errors Extracted source (around line #1):

1:<% if @user.errors.any? %>
2:<div id="error_explanation">
3:<h2><%= pluralize(@user.errors.count, "error") %>
4:prohibited this <%= object.class.to_s.underscore.humanize.downcase %>
Trace of template inclusion: app/views/shared/_micropost_form.html.erb, >app/views/pages/home.html.erb

如果我从 app\views\shared_micropost_form.html.erb 中删除以下行,页面将正确呈现 <%= render 'shared/error_messages', :object => f.object %>

感谢任何帮助。

最佳答案

这是因为您将变量 object 传递到您的部分中,但在部分中您尝试使用名为 @user 的变量。将该部分中的每个 @user 实例更改为 object ,它将正常工作。

1:<% if object.errors.any? %>
2:<div id="error_explanation">
3:<h2><%= pluralize(object.errors.count, "error") %>
4:prohibited this <%= object.class.to_s.underscore.humanize.downcase %>

更新:澄清一下,上面的答案假设设置 @user 变量存在错误,但没关系。当您在渲染调用中说 :object => f.object 时,您是在告诉 render 获取此表单所基于的对象,并将其发送到部分 - 变量名称为object

将错误代码重构为共享部分的要点在于,它将被多个表单用于不同的模型。在部分中,您不能说 @user 因为您将为所有其他模型使用相同的部分。这就是为什么部分代码被更改为使用更通用的变量名称,object

关于ruby-on-rails - 页面中没有方法错误#home,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3940087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com