我一直在做一个铁轨形式,并认为我搞砸了一些东西,但不能指责什么。
概述。我创建了一个1页的网站,底部有一个联系表单。我一直在寻找类似的问题,他们似乎在另一个页面上有另一个控制器的联系表格,所以找不到我的答案。我知道我错过了什么,但无法弄清楚是什么。
我收到错误消息
First argument in form cannot contain nil or be empty
我的 main_controller.rb 如下
class MainController < ApplicationController
def new
@contact = Contact.new
end
def create
@contact = Contact.new(contact_params)
@contact.request = request
if @contact.deliver
redirect_to thank_you_path
else
flash.now[:error] = 'Cannot send message.'
render :index
end
end
private
def contact_params
params.require(:contact).permit(:name, :email, :phone, :message)
end
end
contact.rb 是
class Contact < MailForm::Base
attribute :name, :validate => true
attribute :email, :validate => /\A([\w\.%\+\-]+)@([\w\-]+\.)+([\w]{2,})\z/i
attribute :phone, :validate => true
attribute :message, :validate => true
def headers
{
subject: "Quote Form",
to: "email-addy@gmail.com",
from: %("#{name}" <#{email}>)
}
end
end
index.html.erb
<%= bootstrap_form_for(@contact, layout: :horizontal, label_col: "col-sm-2", control_col: "col-sm-10") do |f| %>
form template here
<% end %>
路由/ RB
Rails.application.routes.draw do
resources :main, only: [:new, :create]
root 'main#index'
get '/thank-you' => 'main#thank-you'
end
答案 0 :(得分:0)
您正在新方法中创建一个Contacts实例,并在index.html.erb上使用form_for调用该实例,这就是您获取p.setBoolean(j, param ? "1" : "0");
nil 的原因,只需移动此代码{{1索引方法/操作,您实际使用Contact实例调用表单。