2016-01-08 4 views
0

Я пытаюсь показать флеш-сообщение для одного из моих методов при отправке, он сохраняет, а затем отображает флеш-сообщение, но он этого не делает.flash [: notice] not shows rails 4

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> 

Я не уверен, что еще делать, потому что я пробовал разные варианты, но все безрезультатно. Буду признателен за любую помощь.

ответ

1

Я думаю, что это происходит, потому что ваша страница перенаправляется до назначения сообщения в flash[:notice].

Итак, в вашем PromotionsController переместите flash[:notice] линии до redirect_to.

И я не вижу, где вы показываете это флеш-сообщение в своем представлении.

1

Вам необходимо отобразить флэш-сообщения тоже:

<% 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 для отображения флэш-сообщений. Вы можете поместить его в файл application.html.erb в любом div.

И добавьте сообщение flash [: notice] перед redirect_to (: back) в методе контроллера.

Надеюсь, это поможет!

0

redirect_to :back использует javascript:history.back(), который не будет отображать необходимое сообщение в вашей вспышке. Вместо этого попробуйте использовать redirect_to other_page_path. Надеюсь, что поможет