Rails 3:模板缺失错误。如何仅在创建后呈现Flash消息

时间:2012-02-08 08:37:05

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

我正在尝试在创建操作后仅渲染没有重定向或渲染的Flash消息:

  def create
    @subscriber = Subscriber.new(params[:subscriber])
    if @subscriber.save
      success = true
      message = "Thanks!"
    else
      success = false
      message = "Sorry, there was an error."
    end

    respond_to do |format|
      format.html {
        if success
          flash[:success] = message 
        else
          flash[:error] = message
        end  
      }  
    end
  end

使用此代码,我收到模板缺失错误。我也不想刷新同一页面。如何在不刷新页面且没有模板错误的情况下显示Flash消息?

1 个答案:

答案 0 :(得分:2)

如果您没有重定向到任何其他操作,那么您应该有一个名为create.html的视图

这里的常见做法是重定向某个地方,比如root_path,或者转到用户个人资料或其他任何

是的,只显示flash消息,你可以使用AJAX,然后你的控制器动作看起来就像:

def create
  @subscriber = Subscriber.new(params[:subscriber])
  success_msg, error_msg = "Thanks!", "Sorry, there was an error."

  respond_to do |format|
    if @subscriber.save
      format.html { redirect_to root_path, :success => success_msg }
      format.js { render :js => your_javascript_to_show_the_message_here }
    else
      format.html { redirect_to root_path, :error => error_msg }
      format.js { render :js => your_javascript_to_show_the_message_here }
    end
  end 
end