0

我有 - 可能是愚蠢的 - 渲染我的表单的问题。我有两个控制器:ContentController - 负责标签页的内容视图和为处理数据库模型而生成的 ParticipantsController 脚手架。我想制作一个用于登录新参与者的表单并将其放入部分 _new.html.erb 中,然后将其嵌入到我的 ContentController 的“计划”视图中。我对rails真的很陌生,所以也许我错过了一些东西,但是当我把这样的形式放在:

<%= form_for @participant do |f| %> 
    <%= f.label :name %>
    <%= f.text_field :name %>
    ...

我收到一个错误:

First argument in form cannot contain nil or be empty

在我的控制器中,我有:

def new
    @participant = Participant.new
end

所以我想一切都应该没问题。

当我在表单中使用 Participant.new 而不是 @participant 时,一切都呈现正确;但我不确定这是否适用于数据库,我的意思是我希望在单击提交按钮后在数据库中创建新的参与者记录。

我希望我传递足够的信息让你们帮助我。提前致谢

4

1 回答 1

1

错误消息告诉您不能拥有以下内容:

<%= form_for nil do |f| %>
<%= form_for [] do |f| %>

我的猜测是您的 @participant 设置为 nil 并且它不是来自您的 Participantst#new 操作。

如果你这样做,它会简单地工作:

<%= form_for Participant.new do |f| %>

虽然不推荐。

您需要检查包含您的表单的视图是否实际上是由您的 ParticipantsController 的新操作呈现的。有关更多信息,请参阅https://github.com/plataformatec/devise/issues/2451

于 2013-10-26T11:13:12.320 回答