如何将表单添加到application.html.erb页面ruby

时间:2016-04-20 20:14:02

标签: html ruby-on-rails ruby

我对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”页面中找到的代码。

有人能指出我正确的方向吗?说实话,我甚至不知道从哪里开始寻找答案。

2 个答案:

答案 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,还要经过一个基础教程。只是快速回顾一下你的问题:

  1. application.html.erb通常位于rails的layout文件夹中, 如果没有指定,它的工作是为整个项目提供根模板/布局。 通常你想要放置任何不常见的代码 所有页面都需要。

  2. 它给你错误First argument in form cannot contain nil or be empty的原因是因为,辅助方法form_for期望控制器向视图文件@thing提供application.html.erb在您的情况下,很明显您的控制器或@thing中不存在ApplicationController