2011-03-24 58 views
2

我正在使用Rails 3,并且我有一个ajax窗体(即:remote => true),它是我的控制器上的“插入”操作。rails 3 - 在ajax表单提交后停留在页面上但显示“flash”

我想让用户留在索引页面上,但能够显示控制器中“插入”动作设置的闪存消息。

目前我的“插入”行动确实是这样的:

def insert 
    begin 
    # perform insert of stuff 
    flash[:success] = "Successfully..." 
    rescue 
    flash[:error] = "failed ..." 
    end 
    render :nothing => true 
end 

这样的形式(上index.html.erb)提交,并保持该网页上的用户,但没有闪光灯的消息出现。我怎样才能让Flash消息出现? (猜测它与渲染有关:没有东西,但没有,我在服务器日志中得到“缺少模板”错误)。

回答

4

你需要一个JavaScript应答:

def insert 
    begin 
    # perform insert of stuff 
    flash[:success] = "Successfully..." 
    rescue 
    flash[:error] = "failed ..." 
    end 
end 


# insert.js.erb 
$('#flash').html(<%= flash[:notice].to_json %>); 

使用闪光灯展现形式的错误消息肯定是反常的行为。你最好用错误信息更新表单中的元素或完全替换表单。

+0

闪存并非真正意味着显示与表单有关的错误消息,而是通知用户在向数据库插入期间是否发生故障。 – codecraig 2011-03-28 12:20:41

相关问题