我正在尝试在提交时显示我的一个方法的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>
我不知道还能做什么,因为我尝试了不同的选择,但都无济于事。非常感谢任何帮助。
答案 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">×</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
。希望有所帮助