如何在rails3中呈现编辑视图和发布flash消息

时间:2011-01-22 21:35:17

标签: ruby-on-rails-3 view

在我的帐户控制器中,我想在保存更改并显示闪存通知后显示(渲染,重定向?)编辑视图。

 def update
    @account = Account.find(params[:id])

    respond_to do |format|
      if @account.update_attributes(params[:account])
        format.html { redirect_to(@account, :notice => 'Account was successfully updated.') }

      else
        format.html { render :action => "edit" }
      end
    end
  end

3 个答案:

答案 0 :(得分:43)

默认情况下,您必须使用单独的声明,例如

format.html { 
  flash[:notice] = 'message'
  render :edit
}

This ticket有一个补丁,可让您使用render 'edit', :notice => 'message'。它没有进入Rails,但有一个宝石,flash_render,它添加了它。

答案 1 :(得分:10)

您仍然可以使用Rails 2中的通知:

flash[:notice] = "message"

只需将以下行添加到视图顶部即可显示:

<p id="notice"><%= flash[:notice] %></p>

如果您不想让用户再次填写编辑表单,则应使用render方法。

答案 2 :(得分:10)

如果您只是使用flash[:notice],那么该值仍可在下一个请求中使用。意思是,您将在接下来的2页上看到该文本。而是使用flash.now仅在当前请求中使值可用。

format.html { 
  flash.now[:notice] = 'message'
  render :edit
}

参考阅读Action Controller Overview 5.2.1