Итак, у меня есть сайт static_pages #, в котором я хочу, чтобы люди помещали свой адрес электронной почты в форму, которая сохранит ее в базе данных моего NewslettersController. Но я не работаю для меня, я могу ввести свой адрес электронной почты и нажать «Отправить», но он не будет сохранен в базе данных или проверен в модели.Простая форма бюллетеня
Посмотреть static_pages # дом, который является корнем
<%= form_for Newsletter.new, :url => { :controller => "newsletters", :action => "create" } do |f| %>
<%= f.text_field :email, :style => "width:50%;", :placeholder => "Your email address", :class => "form-control input-sm" %>
<%= f.submit "Keep me updated", :class => "btn btn-primary btn-sm" %>
<% end %>
Модель
class Newsletter < ActiveRecord::Base
attr_accessible :email
validates_uniqueness_of :email
validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i
end
Контроллер
class NewslettersController < ApplicationController
def create
@newsletter = Newsletter.new(params[:newsletter])
respond_to do |format|
if @newsletter.save
format.html { redirect_to root_path, notice: 'You will hear from us shortly, Thank You' }
else
format.json { render json: @newsletter.errors, status: :unprocessable_entity }
end
end
end
end
resources :newsletters, :only => :create
EDIT:
Посмотреть
<%= form_for @newsletter do |f| %>
<%= f.text_field :email, :style => "width:50%;", :placeholder => "Your email address", :class => "form-control input-sm" %>
<%= f.submit "Keep me updated", :class => "btn btn-primary btn-sm" %>
<% if @newsletter.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@newsletter.errors.count, "error") %> prohibited this email address from being saved:</h2>
<ul>
<% @newsletter.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<% end %>
Я редактировал представление и контроллер в статических страницах, но он по-прежнему оленья кожа сохранить в базе данных или дать мне какие-либо сообщения об ошибках. См. Редактирование в оригинальной записи. :/ – Pierre
Дело в том, что вы отвечаете в JSON, если произошли какие-либо ошибки. Отредактировал мой ответ. –
<% = @ newsletter.errors.messages%>, который дает мне эту пустую строку {: email => []}. Я также изменил свой контроллер на ваш пример, но ничего не создается, и я не получаю никаких сообщений об ошибках. – Pierre