Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 4-表单中的第一个参数不能包含nil或为空_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails Rails 4-表单中的第一个参数不能包含nil或为空

Ruby on rails Rails 4-表单中的第一个参数不能包含nil或为空,ruby-on-rails,ruby,Ruby On Rails,Ruby,我的问题非常类似于 在多次阅读该页面(以及其他7个有相同问题的页面)并花费数小时试图修复此问题后,我一直无法修复。链接页面上的第一段错误消息与每次刷新用户页面时收到的错误消息完全相同 我是一个完全的新手,跟随Michael Hartl的Ruby on Rails教程,我正在尝试做一个小小的改变。我没有在主页上为新的MicroPost呈现表单,而是尝试在登录用户的配置文件页面上呈现表单。在登录到用户#1并在[URL]/users/1处查看该用户的配置文件页面后,我收到上述错误消息。当在注销时查看该

我的问题非常类似于

在多次阅读该页面(以及其他7个有相同问题的页面)并花费数小时试图修复此问题后,我一直无法修复。链接页面上的第一段错误消息与每次刷新用户页面时收到的错误消息完全相同

我是一个完全的新手,跟随Michael Hartl的Ruby on Rails教程,我正在尝试做一个小小的改变。我没有在主页上为新的MicroPost呈现表单,而是尝试在登录用户的配置文件页面上呈现表单。在登录到用户#1并在[URL]/users/1处查看该用户的配置文件页面后,我收到上述错误消息。当在注销时查看该用户的个人资料页面时,我没有收到任何错误消息,也没有按预期显示micropost表单。我很抱歉问了这么一个愚蠢的问题,因为我确信除了我之外,每个读到这篇文章的人都能清楚地找到答案。但我做错了什么

错误消息详细信息:

ArgumentError in UsersController#show
First argument in form cannot contain nil or be empty
app/views/shared/_micropost_form.html.erb:1:in _app_views_shared__micropost_form_html_erb'
app/views/users/show.html.erb:9:in _app_views_users_show_html_erb'

Parameters:
{"id"=>"1"}
config/routes.rb:

resources:microposts,仅限:[:创建,:销毁]


views/shared/_microspost_form.html.erb:(图片#1)

我尝试使用的view/users/show.html.erb的多次迭代之一。我已经尝试了很多不同的东西,我相信哪种尝试都无关紧要;错误消息总是一样的:(上一张相册中的图片#2;在这个问题中我只能粘贴两个链接。)


如果相关,请在controllers/users_controller.rb下执行“show”操作:(上一张相册中的图片#3;在这个问题中,我只能粘贴两个链接。)

您会遇到该错误,因为
@micropost
在您的部分中为零,因为它实际上没有在任何地方定义

按照约定,将为分部集合中的每个项创建一个与分部同名的局部变量。因此,在本例中,局部作用于集合partial的变量名是
micropost

在_micropost.html.erb中


请注意,您的分部实际上需要命名为
\u micropost.html.erb

如果您查看最初包含表单的操作,您将在该控制器的某个地方看到一个变量被设置为向表单提供所需的实例变量。如果要在其他视图上呈现表单,则需要确保现在负责该表单的操作已包含该表单。。(如果还没有,您可以从原始版本中删除它。

更改为此
将“”与您编写的内容进行比较后,我在“for”和“(@micropost)”之间添加了一个空格)在#u microspost_form.html.erb的第1行,保存了更改,并重新加载了用户#1的个人资料页面。错误消息仍然与我一直收到的消息相同。你的意思是我应该在其他地方使用该代码吗?渲染“microspost_表单”的位置在哪里?views/shared/#microspost_form.html.erbr你在哪里使用该表单?在show?很抱歉我是一个白痴,但我不明白你说的话。我用你提供的代码行替换了_microsoft.html.erb(以前是“”)的第1行,但错误消息的更改方式只是让我认为这也是错误的。我该怎么做,特别是用“代码行”或您刚才提供的代码行?如果我能看到答案,我相信我最终能够理解它。
应该是正确的。但解决方案取决于您的分部的名称。您能提供您看到的确切错误吗?抱歉,我想我已经开始了解您所说的,如果只是部分的话。我已经完成了定义“@micropost”作为“@micropost=当前用户.micropost.build(如果已登录)?"但是,我不知道我现在应该把这行代码放在哪里。到目前为止,我尝试过的所有地方都不起作用;每次尝试后,错误消息都是一样的,比如把它放在_micropost.html.erb的最顶端。是的,这是有道理的,如果登录,你会把
@micropost=current_user.micropost.build?
放在con中troller。这是错误消息。该部分的名称是_micropost.html.erb