Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.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-on-rails-4/2.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联系人表单错误_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails Rails 4联系人表单错误

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

我正在尝试在Rails中设置一个基本联系人表单,它不断抛出以下错误:

表单中的第一个参数不能包含nil或为空

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| %>