Ruby on rails Rails 4联系人表单错误
我正在尝试在Rails中设置一个基本联系人表单,它不断抛出以下错误: 表单中的第一个参数不能包含nil或为空Ruby on rails Rails 4联系人表单错误,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我正在尝试在Rails中设置一个基本联系人表单,它不断抛出以下错误: 表单中的第一个参数不能包含nil或为空 Extracted source (around line #1): <%= form_for contact do |f| %> <div> <%= f.label :name %><br/> <%= f.text_field :name %> 和我的控制器: class ContactController < App
Extracted source (around line #1):
<%= form_for contact do |f| %>
<div>
<%= f.label :name %><br/>
<%= f.text_field :name %>
和我的控制器:
class ContactController < ApplicationController
def new
@contact = Contact.new
end
def create
@contact = Contact.new(params[:contact])
if @contact.deliver
flash.now[:error] = nil
flash.now[:notice] = "Thanks for contacting us! We'll get back to you within 24 hours!."
else
flash.now[:error] = "Hmm. We couldn't send your message. Double check that you filled in the whole form."
render :new
end
end
end
class ContactController
提前感谢您的帮助!我已经搜索了这么多,到目前为止还无法修复此问题…将表单作为一个部分呈现,然后使用
局部变量
选项传递变量:
<%= render partial: "form", locals: {contact: @contact} %>
我猜你的@contact设置为nil,它不是来自你的contact#新动作
如果您这样做,它将简单地工作:
<%= form_for Contact.new do |f| %>
虽然不推荐
您需要检查包含表单的视图是否由ContactController的新操作实际呈现。有关更多信息,请参见您确定
@联系人
不是空的吗?试着添加一个
并注释掉render标记,看看@contact
变量是否包含任何内容。啊——显示为“nil”,所以我猜它是空的。鉴于上面的代码,您知道我如何修复它吗?我假设在您访问contacts控制器的新操作时会发生这种情况。尝试使用rails控制台(rails c
)并通过输入c=contact.new
手动创建联系人。然后,在创建新联系人时,您应该能够看到是否有故障。
class ContactController < ApplicationController
def new
@contact = Contact.new
end
def create
@contact = Contact.new(params[:contact])
if @contact.deliver
flash.now[:error] = nil
flash.now[:notice] = "Thanks for contacting us! We'll get back to you within 24 hours!."
else
flash.now[:error] = "Hmm. We couldn't send your message. Double check that you filled in the whole form."
render :new
end
end
end
<%= render partial: "form", locals: {contact: @contact} %>
<%= form_for nil do |f| %>
<%= form_for [] do |f| %>
<%= form_for Contact.new do |f| %>