Рейлс 3.2
Я использую гем Mail_form (от plataformatec), чтобы создать простую форму «свяжитесь с нами» для своего веб-сайта. Когда я нажимаю «отправить», я получаю сообщение об ошибке маршрутизации:
Routing Error
No route matches [POST] "/contactus"
Try running rake routes for more information on available routes.
У меня очень простая установка, но я новичок в Rails и все еще осваиваю ее. Я только хочу, чтобы форма отправляла электронное письмо на определенный адрес электронной почты... больше ничего. Я понимаю, что проблема в route.rb, но я так долго возился с этим, что просто не могу понять, что не так. Я никогда так сильно не боролся с ошибкой Rails. ПОЖАЛУЙСТА ПОМОГИ!
Модель «Страницы»: app/models/pages.rb
class Page < MailForm::Base
attribute :name, :validate => true
attribute :email, :validate => /\A([\w\.%\+\-]+)@([\w\-]+\.)+([\w]{2,})\z/i
attribute :page_title, :validate => true
attribute :page_body, :validate => true
def headers
:subject => "#{page_title}",
:to => "[email protected]",
:from => %("#{name}" <#{email}>)
end
end
Контроллер «Страницы»: app/controllers/pages_controller.rb
class PagesController < ApplicationController
respond_to :html
def index
end
def create
page = Page.new(params[:contact_form])
if page.deliver
redirect_to contactus_path, :notice => 'Email has been sent.'
else
redirect_to contactus_path, :notice => 'Email could not be sent.'
end
end
end
Частичная форма: app/views/pages/_form.html.erb
<%= simple_form_for :contact_form, url: contactus_path, method: :post do |f| %>
<div>
<%= f.input :name %>
<%= f.input :email, label: 'Email address' %>
<%= f.input :page_title, label: 'Title' %>
<%= f.input :page_body, label: 'Your message', as: :text %>
</div>
<div class="form-actions">
<%= f.button :submit, label: 'Send', as: :text %>
</div>
Представление (называемое contactus): app/views/pages/contactus.html.erb
<body>
<div>
<h2 class="centeralign text-info">Contact Us</h2>
</div>
<div class="container centeralign">
<%= render 'form' %>
</div>
<h2>We'd love to hear from you! </h2><br /><h4 class="muted">Send us a message and we'll get back to you as soon as possible</h4>
</div>
</div>
</body>
Routes.rb
Example::Application.routes.draw do
resources :pages
root to: 'pages#index', as: :home
get 'contactus', to: 'pages#contactus', as: :contactus
get 'services', to: 'pages#services', as: :services