在Rails上提交表单后的操作

时间:2012-01-19 15:13:26

标签: ruby-on-rails actionmailer

我有一个工作表单,发布到控制器发送电子邮件。

控制器:

 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

因为它只是重新加载页面。如何在不离开页面的情况下点亮“Thankyou”之后如何刷新消息?该消息甚至可能出现在表单中 - 所以之后会出现一个方框 - “谢谢”

2 个答案:

答案 0 :(得分:1)

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 %>

答案 1 :(得分:0)

我不确定,但你可以试试吗?

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

我认为您可能不必重定向到任何地方。 希望它会有所帮助。