4

当使用 Twitter-Bootstrap 的样式不正确地提交表单时,我试图简单地呈现一条 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
4

1 回答 1

6

您的错误行应如下所示:

redirect_to :back, flash: {error: "Oops, something went wrong. Please try again"}
于 2012-09-12T19:52:37.033 回答