Rails Automatically Save a Draft of a Form

Gmail里的Ajax自动保存草稿在Rails里的实现
首先在layout里引入Javascript标签
[coce]
<%= javascript_include_tag :defaults %>
posts_controller.rb
Java代码
  1. def new  
  2.   if request.get?  
  3.     @post = session[:post_draft] || Post.new  
  4.   else  
  5.     @post = Post.create(params:post])  
  6.     session[:post_draft] = nil  
  7.     redirecto_to :action => 'list'  
  8.   end  
  9. end  
  10.   
  11. def save_draft  
  12.   session[:post_draft] = Post.new(params[:post])  
  13.   render :text => "<i>Draft saved at #{Time.now}</i>"  
  14. end  
posts/new.rhtml
Java代码
  1. <% form_for :post, @post,  
  2.             :url => {:action => "new" },  
  3.             :html => {:id => 'post_form'do |f| %>  
  4.   Title: <%= f.text_field :title %><br/>  
  5.   Body: <%= f.text_area :body %><br/>  
  6.   <%= submit_tag "Save Post" %>  
  7. <% end %>  
  8. <div id='draft-message' style='color:read;'>  
  9. </div>  
  10. <%= observe_form 'post_form',  
  11.                  :url => {:action => 'save_draft'},  
  12.                  :update => 'draft-message',  
  13.                  :frequency => 30 %> 
posted @ 2009-07-02 11:52  麦飞  阅读(456)  评论(0编辑  收藏  举报