Действие после отправки формы на Rails - PullRequest
0 голосов
/ 19 января 2012

У меня есть рабочая форма, которая отправляет сообщения на контроллер для отправки электронной почты.

Контроллер:

 def contact
    name = params[:contact][:your_name]
    message = params[:contact][:your_message]
    email = params[:contact ][:your_email]
    Contact.contact_form(message, name, email).deliver
    redirect_to :back
 end

Форма:

<%= form_for :contact , :url => contact_pages_path(@message), :html => {:method => :put} do |f| %>
<p>
<b>Your email:</b><br>
<%= f.text_field :your_email %>
<b>Name</b><br>
<%= f.text_field :your_name %>
</p>
<p>
<b>Message</b><br>
<%= f.text_area :your_message %>
 </p>
<p>

Однако я не являюсьочень доволен

redirect_to :back

, так как он просто перезагружает страницу.Как я могу прошить сообщение с надписью «Спасибо», не отходя от страницы?Сообщение может даже появиться в форме - поэтому после этого появляется окно с надписью - «Спасибо»

Ответы [ 2 ]

1 голос
/ 19 января 2012
redirect_to :back, :notice => "Thank-you"

Конечно, это будет работать, только если ваш шаблон application.html.erb распечатывает содержимое уведомлений / предупреждений.Для этого вам нужно что-то вроде:

    <% if !notice.nil? || !alert.nil? %>
        <section id="message" class="message-<%= notice.nil? ? "alert" : "notice" %>">
            <div class="row">
                <div>
                    <% if !notice.nil? %>
                        <p class="notice"><%= notice %></p>
                    <% end %>
                    <% if !alert.nil? %>
                        <p class="alert"><%= alert %></p>
                    <% end %>
                </div>
            </div>
        </section>
    <% end %>
0 голосов
/ 19 января 2012

Я не уверен, но не могли бы вы попробовать это?

if Contact.contact_form(message, name, email).deliver
  flash[:notice] = "mail has been sent successfully."

Думаю, вам не нужно никуда перенаправлять. Надеюсь, это поможет.

...