Rails不会导致错误

时间:2016-05-16 10:45:17

标签: ruby-on-rails ruby ruby-on-rails-3

我一直在做一个铁轨形式,并认为我搞砸了一些东西,但不能指责什么。

概述。我创建了一个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

1 个答案:

答案 0 :(得分:0)

您正在新方法中创建一个Contacts实例,并在index.html.erb上使用form_for调用该实例,这就是您获取p.setBoolean(j, param ? "1" : "0"); nil 的原因,只需移动此代码{{1索引方法/操作,您实际使用Contact实例调用表单。