-3
私はレールのフォームに取り組んでいて、何かを台無しにしてしまったと思っています。エラーの原因とならないレールのフォーム
概要を説明します。私は一番下の連絡先フォームを持つ1ページのサイトを作成しました。私は似たような質問をしていますが、別のコントローラと別のページにコンタクトフォームがあるようですので、私の答えを見つけることはできません。私は何かを見逃していることを知っていますが、何が分からないのですか。
は私が述べてエラーを取得する
First argument in form cannot contain nil or be empty
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 protected]",
from: %("#{name}" <#{email}>)
}
end
end
で次のように私のmain_controller.rbです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
コントローラのインデックスアクションで '@contact'が定義されていません。 –
index.html.erb '@contact'はnilであるため、またはあなたのフォームでContact.newを '@contact'に置き換えてください。 –
@ j-dexxどうすればよいですか?私はそれをメインコントローラにdefインデックスとして追加しようとしました –