flash [:notice]没有显示rails 4

时间:2016-01-08 06:55:20

标签: ruby-on-rails ruby-on-rails-4 flash-message

我正在尝试在提交时显示我的一个方法的flash消息,它保存然后显示flash消息,但它没有这样做。

class PromotionsController < ApplicationController
  def newsletter_signup

    @subscriber = Subscriber.new(params[:subscriber])
    if params[:subscriber][:email].present?
      @subscriber.save
      redirect_to :back
      flash[:notice] = "Thank you. You have subscribed to our newsletter"
    end
  end
end

我在application.html.erb中的观点

<div class="row ">
  <div class="icon-send col-sm-4 col-lg-4 hidden-xs  col-md-4 col-xs-4">
    <span class="text-center subscribeLabel">Subscribe to Our Newletter</span>

 </div>
 <%= form_for(Subscriber.new, url: newsletter_signup_url, :validate => true) do |person_form| %>
     <div class="col-md-6 col-sm-6 col-xs-7">
        <%= person_form.text_field :email, id: "email", class: "SubscibenowText", placeholder: "Enter Your Email Address" %>
     </div>
     <div class="col-md-2 col-sm-2 col-xs-5 SubRelative">
       <button type="submit" class="pull-right btn btn-default subscribebtn">
         GET STARTED
       </button>
     </div>
  <% end %>
</div>

我不知道还能做什么,因为我尝试了不同的选择,但都无济于事。非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

我认为这种情况正在发生,因为在将邮件分配到flash[:notice]之前,您的网页已被重定向。

因此,在PromotionsController之前flash[:notice]移动redirect_to行。{/ p>

我看不到您在视图中显示此Flash消息的位置。

答案 1 :(得分:1)

您还需要显示Flash消息:

<% unless flash.empty? %>
  <div class="row flash_msg">
    <% flash.each do |name, message| %>
      <div class="text-center alert <%= flash_class(name) %>">
        <button class="close" data-dismiss="alert" type="button">&times;</button>
        <i class="<%= flash_icon(name) %>"></i>
        <%= message %>
      </div>
    <% end %>
  </div>
<% end %>

我在application.html.erb中执行此操作以显示Flash消息。 您可以将它放在任何div中的application.html.erb文件中。

将flash [:notice]消息放在控制器方法中的redirect_to(:back)之前。

希望这有帮助!

答案 2 :(得分:0)

javascript:history.back()使用redirect_to other_page_path,无法在您的Flash中设置必要的消息进行显示。而是尝试使用\d。希望有所帮助