`
neverfail
  • 浏览: 2800 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

用rails做个简单的论坛(二):回复与用户

阅读更多

上篇里的主题topic只是标题而没有内容,主要是内容全部都放到了回复post这里,本来研究了下javaeye的论坛,发现板块列表里“最新发表”指向都是xxx/post/id,不知有什么诀窍,所以也打算将主题topic的内容移到post里看看。

一、回复post包括内容、主题ID、用户ID、创建日期等。
创建scaffold:scaffold_resource post content:text topic_id:integer user_id:integer create_at:datetime

topic与post是一对多的关系,修改相关的model文件来达到这个目的。

topic.rb 代码
  1. class Topic < ActiveRecord::Base   
  2.   belongs_to :board  
  3.   has_many   :posts  
  4. end  
post.rb 代码
  1. class Post < ActiveRecord::Base   
  2.   belongs_to :topic  
  3. end  
并修改config/routes.rb ,像上一篇的一样
ruby 代码
  1. map.resources :topics do |topics|   
  2.     topics.resources :posts  
  3. end  
调整topic的 index.rhtml 以达到通过那里访问posts的目的:
xml 代码
  1. <td><%= link_to "#{h topic.title}", posts_path(topic) %>td>  

二、创建用户:只包括帐号和密码和日期

三、登录:修改application控制器,添加检查登录的filter:

ruby 代码
  1. class ApplicationController < ActionController::Base   
  2.   # Pick a unique cookie name to distinguish our session data from others'   
  3.   session :session_key => '_bbs_session_id'   
  4.      
  5.   before_filter :authorize  
  6.      
  7.   private   
  8.      
  9.   def authorize   
  10.     unless User.find_by_id(session[:user_id])   
  11.       flash[:notice] = "请登陆!"  
  12.       redirect_to(:controller=>'index', :action=>'login')   
  13.     end  
  14.   end  
  15. end  

由于 index 控制器还没有,所以必须创建一个简单的: controller index login:
ruby 代码
  1. class IndexController < ApplicationController   
  2.   skip_before_filter :authorize:only => :login  
  3.      
  4.   def login   
  5.     session[:user_id] = nil  
  6.     if request.post?   
  7.       user = User.find_by_username_and_password(params[:username], params[:password])   
  8.       if user   
  9.         session[:user_id] = user.id   
  10.         redirect_to(:controller=>'boards', :action=>'index')   
  11.       else  
  12.         flash[:notice] = '帐号密码不匹配!'   
  13.       end  
  14.     end  
  15.   end  
  16.      
  17. end  

不能限制过客的浏览功能,所以其他控制器我们都修改下来跳过登录拦截:
ruby 代码
  1. skip_before_filter :authorize:only => [:index:show]  
分享到:
评论

相关推荐

    用rails做个简单的论坛(三):将之前的串连起来

    在本篇博文中,我们将继续探讨如何使用Rails框架构建一个简单的论坛系统,这是系列教程的第三部分。在前两部分中,我们可能已经创建了基础的数据库模型、控制器以及视图,现在我们的目标是将这些元素整合起来,使得...

    Ruby-ForemRails3和Rails4论坛引擎

    3. **Markdown 支持**: Forem支持Markdown语法,让用户可以使用简单的文本格式来创建富文本内容,如加粗、斜体、链接等。 4. **标记系统**:用户可以通过标签对帖子进行分类,便于其他用户搜索和发现相关话题。 5...

    rails-forum-basic:Rails制作的基本论坛

    通过学习和分析这个基础Rails论坛项目,开发者可以深入了解Rails框架的工作原理,以及如何结合JavaScript创建一个功能完备的Web应用。此外,此项目也可以作为进一步开发复杂论坛应用的起点,比如增加权限管理、搜索...

    Free_Forum:一个简单论坛的 Ruby on Rails 实现

    【标题】"Free_Forum:一个简单论坛的 Ruby on Rails 实现"是关于使用 Ruby on Rails 框架创建一个论坛应用的项目。这个开源项目为初学者提供了一个实践平台,让他们了解如何利用 Rails 的核心功能来搭建一个交互式的...

    国土:基于Ruby China的基于Rails的开源论坛社区系统

    2. 讨论区与主题:支持创建多个讨论区,每个讨论区可以有多个主题,用户可以发表观点、回复讨论。 3. 搜索与过滤:强大的搜索功能帮助用户找到感兴趣的话题,同时具备举报、屏蔽等过滤机制,维护社区环境。 4. 积分...

    bbs.zip_bbs论坛系统

    在"bbs.zip_bbs论坛系统"中,我们关注的是如何实现这样一个系统的核心功能,包括用户注册、发布主题、回复帖子等基础操作。 **一、用户注册** 用户注册是论坛系统的第一步,通常涉及以下步骤: 1. 用户填写注册...

    很快就会成为有史以来最伟大的网络论坛。_Ruby_.zip

    描述中的"_Ruby_"进一步确认了这个项目与Ruby语言有关,很可能意味着开发者使用了Ruby on Rails来构建论坛。Rails提供了一系列的内置功能,如路由、ActiveRecord(用于ORM,对象关系映射)、ActiveSupport库等,这些...

    下一代论坛程序Discourse体验:简洁不简单.docx

    ### 下一代论坛程序Discourse:简洁而不简单的深度解析 #### 一、Discourse概述 **Discourse**是由StackOverflow联合创始人Jeff Atwood推出的全新开源论坛项目。该项目旨在颠覆过去十年来几乎没有变化的传统论坛...

    框架-(注册、论坛、统计)系统

    - 用户协议与隐私政策:明确告知用户平台数据使用规则,保护用户权益。 2. **论坛系统**: - 论坛结构:包括版块分类、主题、帖子等元素,方便用户浏览和参与讨论。 - 发帖与回复:用户创建新主题、回复他人帖子...

    在线论坛源代码

    5. **用户界面与交互设计**:一个良好的在线论坛需要有直观易用的界面,包括清晰的导航、响应式设计以适应不同设备,以及良好的用户体验设计。 6. **扩展与自定义**:为了满足不同需求,源代码应允许开发者添加插件...

    luntan-.zip_luntan _论坛

    在线论坛是一种基于Web技术的互动平台,用户可以在这里发布主题、回复他人的话题,进行讨论和交流。"luntan-.zip_luntan 论坛"可能是一个关于在线论坛开发的资源包,包含了与构建和管理论坛相关的代码、文档或者示例...

    ruby BBS

    "Ruby BBS"是一个使用Ruby编程语言开发的论坛系统,它体现了Ruby在构建Web应用程序方面的灵活性和强大功能。Ruby是一种面向对象的、动态类型的编程语言,以其简洁的语法和强大的元编程能力而闻名,这使得开发者能够...

    开源论坛项目 Discourse.zip

    总之,Discourse是一个强大且灵活的开源论坛解决方案,其背后是Ruby on Rails的强大支撑,为创建互动性强、用户体验优秀的在线社区提供了可能。无论你是开发者还是社区管理员,都能从中找到适合自己的工具和功能。

    现代化社区系统平台源代码(包含论坛+问答+BBS+社交+网络+博客).zip

    6. 网络架构:整个平台的网络架构涉及前端和后端的分离,可能采用RESTful API进行数据交互,前端使用Vue.js、React或Angular等现代JavaScript框架,后端可能基于Node.js、Django、Ruby on Rails等服务器端技术。...

    cat-forum:一个与CAT考试相关的问题论坛

    它是用Ruby on Rails编写的,并使用Bootstrap进行UI设计。 我们使用haml作为HTML模板引擎。 一些旧模板以简单HTML编写(请PR!)。 编写模板代码时,请使用HAML。 您可以从或学习HAML。 CAT-Forum的一些关键功能...

    Hifone基于LaravelPHP框架开发的论坛程序

    2. **权限管理**:通过角色权限系统,Hifone可以精细化控制用户的不同操作权限,如发帖、回复、编辑等,以维护论坛的秩序。 3. **内容管理**:论坛的核心在于内容,Hifone支持多种格式的帖子,包括文字、图片、视频...

    基于sqlite的ror例子

    在描述中提到的“我回复内容的例子的完整程序”,意味着这个压缩包可能包含了某个用户在博客论坛(如ITEYE)上分享的关于如何在Rails应用中集成SQLite的代码示例。通过提供的博文链接(虽然在这里无法直接访问),...

    Adda:话题讨论应用(论坛)

    "Adda:话题讨论应用(论坛)"是一个基于JavaScript技术构建的在线社区平台,它允许用户参与各种话题的讨论,分享知识,交流观点。在这个应用中,用户可以创建主题、发表评论,与其他用户进行互动,形成一个互动性强...

    BBS-Dev:复旦论坛的可扩展搜索引擎解决方案

    复旦BBS的可扩展搜索引擎解决方案是一个基于开源技术栈构建的高效、可伸缩的搜索系统,主要用于提升论坛内容的检索效率和用户体验。这个解决方案利用了大数据处理框架Hadoop、分布式数据库HBase、网络爬虫Nutch、...

Global site tag (gtag.js) - Google Analytics