4

我试图在使用Twitter-Bootstrap的样式不正确地提交表单时渲染Flash消息。如何在Rails 3.2中正确使用Flash消息

我显然失去了一些东西,因为我不断收到以下错误:

TypeError in NewslettersController#create 

can't convert Symbol into String 

下面的代码

查看

 <div class="footer_newsletter_container"> 
      <%= image_tag("envelope.png", :border=>0, :class => '') %>&nbsp;&nbsp;Sign up for our newsletter</br></br> 
      <%= simple_form_for Newsletter.new do |f| %> 
       <%= f.input :email, :label => false, :placeholder => 'Enter Your Email Address', class: "floatleft" %><%= f.button :submit, 'Submit', class: "btn floatleft" %> 
      <% end %> 
      <%= render "layouts/messages" %> 
     </div> 

部分

<% flash.each do |name, msg| %> 
    <div class="alert alert-<%= name == :notice ? "success" : "error" %>"> 
    <a class="close" data-dismiss="alert">&#215;</a> 
    <%= content_tag :div, msg, :id => "flash_#{name}" if msg.is_a?(String) %> 
    </div> 
<% end %> 

控制器

class NewslettersController < ApplicationController 

    def create 
     @newsletter = Newsletter.new(params[:newsletter]) 
     if @newsletter.save 
     redirect_to :back, notice: "You have been added to our newsletter." 
     else 
     redirect_to :back, flash[:error] = "Oops, something went wrong. Please try again" 
     end 
    end 

    def destroy 
    @newsletter = Newsletter.find(params[:id]) 
    @newsletter.destroy 
    end 
end 

回答

5

你的错误行应该如下:

redirect_to :back, flash: {error: "Oops, something went wrong. Please try again"} 
+0

完美。谢谢! – DaveG

相关问题