我对ruby很新,我正在尝试将表单添加到“application.html.erb”页面中。
不知怎的,我只是通过复制“app / views / things / _form.html.erb”页面中的代码无法让它工作,而且我似乎无法通过复制代码来使其工作来自“app / views / things / new.html.erb”页面。
如果我这样做,我会收到错误:
First argument in form cannot contain nil or be empty
错误指向:
<%= form_for(@thing) do |f| %>
这是我在“app / views / things / _form.html.erb”页面中找到的代码。
有人能指出我正确的方向吗?说实话,我甚至不知道从哪里开始寻找答案。
答案 0 :(得分:0)
应在控制器中初始化@thing
。我想你有一个things_controller.rb
,其中有new
个动作。在此操作中,控制器应初始化@thing
,因此它在app/views/things/new.html.erb
中可见。
你真的不应该在application.html.erb
中放置表单,但只是为了让错误消失,你可以做到
<%= form_for(Thing.new) do |f| %>
(假设您在Thing
中有app/models/thing.rb
模型。
这样您就可以在Thing
视图中初始化application.html.erb
的实例。
答案 1 :(得分:0)
我认为你应该首先看看rails MVC模型上的ruby,还要经过一个基础教程。只是快速回顾一下你的问题:
application.html.erb通常位于rails的layout
文件夹中,
如果没有指定,它的工作是为整个项目提供根模板/布局。
通常你不想要放置任何不常见的代码
所有页面都需要。
它给你错误First argument in form cannot contain nil or be empty
的原因是因为,辅助方法form_for
期望控制器向视图文件@thing
提供application.html.erb
在您的情况下,很明显您的控制器或@thing
中不存在ApplicationController
。