respond_with重定向通知flash消息无效

时间:2011-05-23 18:59:32

标签: ruby-on-rails ruby ruby-on-rails-3 redirect

我正在使用rails 3.0.7。在控制器中我有:

  def create
    @subscription = Subscription\
      .new_from_nested_attributes_parameters(params[:subscription])

    if @subscription.save
      flash[:notice] = 'The Subscription was successfully created.'
    end

    respond_with @subscription
  end

并在视图中:

<%="Notice:#{flash[:notice]}"%>

尽管对象被正确保存,但不打印任何内容。

你对我该如何解决这个问题有所了解吗?

3 个答案:

答案 0 :(得分:7)

我发现了这个问题。

flash [:notice] =“....”正在处理创建操作,重定向到show动作。

我忘记的是我的“节目”包含重定向编辑。

我通过实现这样的show动作来解决这个问题:

def show
  redirect_to edit_subscription_path(@subscription),flash
end

从Rails 3.1开始,这应该通过以下方式完成:

def show
  flash.keep
  redirect_to edit_subscription_path(@subscription)
end

答案 1 :(得分:2)

在Rails 3.2中,以下内容将起作用,并且似乎可以保持闪存不变:

respond_with @subscription, :location => edit_subscription_path(@subscription)

答案 2 :(得分:1)

您可以跳过显示页面:

而不是:

respond_with @subscription

把:

respond_with @subscription, edit_subscription_path(@subscription)