ruby-on-rails - 什么是保存草稿帖子的 RESTful 方式?

标签 ruby-on-rails ruby-on-rails-3 autosave

我正在制作的一个小型测试网站上有一个帖子 Controller 。我想为网站提供“保存草稿”/组合自动保存功能,因为该网站将有很长的帖子,用户可能想要离开并回来完成。但是,我之前从未在 Rails 应用程序(或任何应用程序)中构建过自动保存/保存功能。什么是好的,RESTful 的方式来做到这一点?

这是我当前的 Controller 操作:

post_controller.rb

 def create

 @post = params[:post]
 if @post.save
     flash.now[:success] = "Post created!"
 else 
     render_errors_now(@post) 
 end
     respond_to do |format|
           format.html {redirect_to Discussion.find(session[:discussion_id])}
           format.js
     end
 end

如您所见,用户远程发帖。

这是当前的 post.rb 模型:
 attr_accessible :content, :title
 validates :title, :presence => true 
 validate :title_character_length

 validates :content, :length => { :maximum => 10000 }
 validates :user_id, :presence => true
 validates :discussion_id, :presence => true
 belongs_to :user
 belongs_to :discussion
 default_scope :order => 'posts.created_at ASC'

 def title_character_length
    #some code that checks length
 end

我需要从这段代码中完成以下事情..
  • 定期自动保存(可能是 1 分钟间隔)
  • 提供保存草稿的选项
  • 选择要运行的验证:例如,我希望允许用户保存标题超过允许长度的草稿,同时不允许他们实际发布具有该标题的帖子。

  • 我也很好奇保存草稿的良好 Rails 实践是什么:我应该向后期模型添加属性“草稿”吗?或者创建一个草稿帖子模型?

    好的,如果我需要提供更多信息,请发表评论。我很想听听人们的意见!谢谢大家!

    最佳答案

    自动保存:

    application.js

    $(document).ready(function() {
      setInterval(function() {
        $('form[data-remote]').submit();
      }, 1000*60); // 1000ms * 60s = 1m
    });
    

    然后你需要有一个 update.js.erb处理消息(例如“已保存”)。

    对于草稿,我会制作一个单独的模型,PostDraft .自动保存将保存 PostDraft对象,然后一旦他们点击“发布”或其他什么,它就会创建一个新的 Post并删除 PostDraft .此方法还将允许用户拥有超过限制的标题,只需不要将该验证放在 PostDraft 模型上。如果您在 Post 中完成所有操作,这将更加困难。带有“草稿” bool 值的模型。

    关于ruby-on-rails - 什么是保存草稿帖子的 RESTful 方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7700178/

    相关文章:

    ruby-on-rails-3 - 升级 Heroku Postgres 数据库计划

    ruby-on-rails - 使用 has_many 关联保存模型

    macos - OS X Lion 中具有自动保存和版本功能的 Shoebox/Library 应用程序

    ruby-on-rails - 使用 ruby​​ on rails 的事件预订应用程序

    ruby-on-rails - alias_method、alias_method_chain 和 self.included

    ruby-on-rails - 将 i18n gem 与 View 文件一起使用时出现问题

    ruby-on-rails - Postgresql WHERE 子句添加 '' 左右?

    ruby-on-rails - 在 has_many 关联上 find_or_initialize_by 导致重复错误

    macos - 为什么 init 和 windowControllerDidLoadNib 不是 : method called when a autosaved document is automatically open ?

    ruby-on-rails - Ruby on Rails : Seeding data for a user upon signup?