2016-01-04 1 views
1

Я работаю с почтовым ящиком mail_form. Я уже создал конкретный контроллер для контактной формы, и everythink кажется правильным, но когда я отправляю какую-либо форму, представление не меняется с созданного на создание, но URL-адрес делает. Он показывает localhost3000/gmm/контакты (который изменился с localhost3000/gmm/contacts/new). Меня беспокоит эта проблема; Кроме того, новый вид показывает электронную почту в поле name's как показано на картинке:Контакты не обновляется из контактов/нового вида с использованием почтового ящика mail_form в rails

"http://2.bp.blogspot.com/-Q4qUs1CHm-M/Voqc-VYiXII/AAAAAAAAAdE/nJMxgpTEu5s/s320/problem1.jpg"

Controller file: 

     class ContactsController < ApplicationController 
def new 
    @contact = Contact.new 
end 

def create 
    @contact=Contact.new(params[:contact]) 
    @contact.request=request 
    if @contact.deliver 
     flash.now[:error]=nil 
    else 
     flash.now[:error]='Cannot send message.' 
     render :new 
    end 
end 

конца

Новый вид:

 <body> 
<section> 
    <div class="container"> 
     <div class="row"> 
      <div class="col-lg-8 col-lg-offset-2 text-center"> 
       <h2 class="margin-top-0 wow fadeIn">Get in Touch</h2> 
       <hr class="primary"> 
       <p>We love feedback. Fill out the form below and we'll get back to you as soon as possible.</p> 
      </div> 
      <div class="col-lg-10 col-lg-offset-1 text-center"> 
       <%= form_for @contact do |f| %> 
       <div class="col-md-6 text-faded"> 
        <%= f.label :name %> 
        <%= f.text_field :name, required: true, :class => "form-control", :placeholder => "Name"%> 
       </div> 
       <div class="col-md-6 text-faded"> 
        <%= f.label :email %> 
        <%= f.email_field :name, required: true, :class => "form-control", :placeholder => "Email" %> 
       </div> 
       <div class="col-md-12 text-faded"> 
        <%= f.label :message %> 
        <%= f.text_area :message, as: :text, :class => "form-control", :rows=>"9", :placeholder => "Your message here.."%> 
       </div> 
       <div class="hidden"> 
        <%= f.label :nickname %><br> 
        <%= f.text_field :nickname, hint:"leave this field blank"%> 
       </div> 
       <div class="col-md-4 col-md-offset-4"> 
        <%= f.submit "Send Message", :class=> "btn btn-primary btn-block btn-lg" %> 
       </div> 
       <%end%> 
      </div> 
     </div> 
    </div> 
</section> 

Модель:

  class Contact<MailForm::Base 
attribute :name, :validate => true 
attribute :email, :validate => /\A([\w\.%\+\-]+)@([\w\-]+\.)+([\w]{2,})\z/i 
attribute :message, :validate => true 
attribute :nickname,:captcha => true 

def headers 
    { 
    :subject => "Contact Form", 
    :to => "[email protected]", 
    :to => "[email protected]", 
    :from => %("#{name}" <#email>) 
    } 
end 

конца

Маршруты:

 Rails.application.routes.draw do 

      resources :contacts, only: [:new,:create] 

      get 'gmm/home' 

      get 'gmm/about' 

      get 'gmm/services' 

      get 'gmm/contact' 

      get '/change_locale/:locale', to: 'settings#change_locale', as: :change_locale 

Я думаю, что это должно быть проблемой с постом глаголом или моим маршрутизации, но я сделал грабли: маршруты в несколько раз и нет прогресса. Большое спасибо за вашу помощь. Я действительно ценю это

ответ

0

Ответ на сообщение, отображаемое в поле имени, вы фактически сохраняете электронную почту в поле имени.

изменение адреса электронной поле от этого:

<%= f.email_field :name, required: true, :class => "form-control", :placeholder => "Email" %> 

к этому:

<%= f.email_field :email, required: true, :class => "form-control", :placeholder => "Email" %> 

Ответ на вопрос URL является:

в контроллере после того, как в соответствии с моей оценкой, вы должны сохранить контакт если вам нужно. если контакт успешно сохраняется, вы должны перенаправить на new_contact_path.

контроллер должен выглядеть следующим образом:

def create 
@contact=Contact.new(params[:contact]) 
@contact.request=request 
if @contact.deliver 
    flash.now[:error]=nil 
else 
    flash.now[:error]='Cannot send message.' 
    redirect_to new_contact_path 
end 
end 
+0

Спасибо большое, я немного сонный я изменил: имя в: адрес электронной почты, и теперь он работает. Благодаря :) – jportella

Смежные вопросы