4

Twitter-Bootstrap のスタイリングを使用してフォームが不適切に送信されたときに、単純にフラッシュ メッセージをレンダリングしようとしています。

次のエラーが発生し続けるため、明らかに何かが欠けています。

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 に答える