Я работаю над формой рельсов и думаю, что я что-то испортил, но не могу сказать, что.Форма рельсов, не вызывающая ошибок
Чтобы дать обзор. Я создал сайт с 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 protected]",
from: %("#{name}" <#{email}>)
}
end
end
index.ht ml.erb
<%= bootstrap_form_for(@contact, layout: :horizontal, label_col: "col-sm-2", control_col: "col-sm-10") do |f| %>
form template here
<% end %>
маршруты/Р.Б.
Rails.application.routes.draw do
resources :main, only: [:new, :create]
root 'main#index'
get '/thank-you' => 'main#thank-you'
end
У вас нет '@ contact', определенного в указательном действии контроллера. –
вам нужно инициировать «@contact» в вашем действии индекса, потому что на index.html.erb «@contact» равен нулю ИЛИ замените «@contact» на Contact.new в вашей форме. –
@ j-dexx. Как мне это сделать? ? Я попытался добавить его в главный контроллер как индекс def –