acts_as_chattable: Web聊天插件

我的第二个插件,使用它,你可以很简单的集成站内用户聊天功能到你的Rails应用种。

实现时,参考了chatten项目,并使用它的部分源代码,因此,在这里要先感谢chatten项目的作者Jacob Pedersen。

安装

script/plugin install http://svn.elctech.com/svn/public/plugins/acts_as_chattable

Demo

svn co https://svn.elctech.com/svn/public/demo/acts_as_chattable

使用

首先,这个插件假设你有一个user model以及一个users controller,并且有一个current_user helper返回当前user,如果你是用RESTful Auth,它们应该已经在那里了,不过如果你还没有这些,那先创建它们,然后让我们开始:

1. 创建chat_message model:

script/generate chattable

2. 添加 acts_as_chattable 到 user model


class User
  acts_as_chattable
  ...
  def name
    ...
  end
end

你最好为user model 定义一个name方法,否则所有用户的名字都将显示为’Unknown’.

3. 在users controller中包含ChatSystem module


class UsersController
  include ChatSystem
  ...
end

4. 在视图中渲染聊天模块


<%= render_chat(friends, use_yui) %>
<%= buddy_list(friends, use_yui) %>

friends 应该是一个user model的数组,表示当前user 的好友
use_yui 表明是否使用YUI以获得一个更好的外观,默认为true。

你可以通过rdoc来获取这两个helpers的详细说明.

5. 这就搞定了,打开你的浏览器,开始享受聊天的乐趣吧!

最后,欢迎大家多提意见!

更新:特别感谢chm2920,帮我发现了IE7下工作不正常的Bug,新版本已修改,同事感谢我的同事Josh,新版本增加了一个generator,使用更加简单。

This entry was posted in 插件. Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.
  • chm2920

    很不错的插件!
    可demo里貌似还有点错误,不能直接使用。

  • admin

    能详细讲讲demo有什么问题吗?

  • http://blog.isanxia.net zbage

    由于用到了prototype,直接这样也可以,
    $(‘chat#{self.id}’).show()
     
    chat#{friend.id} = new YAHOO.widget.Panel 在IE下报错,前面加个var就可以了
     
    用YAHOO.widget.Panel感觉不爽,用到那么多的JS,内置一个也可以啊,改改htmlwindow.js
     
    若在页面中没有此用户,收到信息会报错(注册一新用户,向以前的老用户发信息,老用户页面无此新用户,就会报错),希望能不要用户列表,太受限制了,

  • http://blog.isanxia.net zbage

    晕,写了那么多,咋没发上去了?

  • admin

    在呢,需要moderate而已,说的有道理,我弱了一把,还想着有的人可能不用prototype,忘记了Ajax.updater就是Prototype的东西。

    你的意见我考虑一下,看看该怎么实现

  • yudi

    不错!有时间试试

  • ruby

    插件好像下不下来呢

  • admin

    哦,这是以前公司的SVN服务器,估计是不能用了,回头有时间迁移到Github去

无觅相关文章插件,快速提升流量