前面介绍的只是一个大概的框架,没有完全串连起来。比如发了主题没有内容等。
一、发表主题时同时添加内容
1、修改rhtml,添加post 的字段。
2、修改controller,创建主题的同时添加post的内容,并修改该板块的相关属性,比如主题数+1,文章数+1,最新发表的post等。(不知这样写会不会太难看) :
ruby 代码
- def create
- user = User.find(session[:user_id])
- board = Board.find(params[:board_id])
- @topic = Topic.new(params[:topic])
- @topic.board = board
- @post = Post.new(params[:post])
- @post.user = user
- @topic.posts << @post
- @topic.post = @post
- @topic.user = user
- @topic.init
-
- respond_to do |format|
- Topic.transaction do
- @topic.save!
- @post.save!
- board.update_attributes!(:topic_count=>board.topic_count+1,:post_count=>board.post_count+1, :post=>@post)
- flash[:notice] = 'Topic was successfully created.'
- format.html { redirect_to post_url(@topic, @post) }
- format.xml { head :created, :location => post_url(@topic, @post) }
- end
- end
- rescue ActiveRecord::RecordInvalid => e
- respond_to do |format|
- format.html { render :action => "new" }
- format.xml { render :xml => @topic.errors.to_xml }
- end
- end
二、回复帖子:在posts/index.rhtml下添加快速回复,也就是将 new.rhtml 的代码复制进来。
post_controller.rb 修改,除了增加回复外,板块与主题也要做相关的update:
ruby 代码
- def create
topic = Topic.find(params[:topic_id])
- @post = Post.new(params[:post])
- @post.topic = topic
- @post.user = User.find(session[:user_id])
- board = topic.board
-
- respond_to do |format|
- Post.transaction do
- @post.save!
- topic.update_attributes!(:post_count=>topic.post_count+1, :post=>@post)
- board.update_attributes!(:post_count=>board.post_count+1, :post=>@post)
- flash[:notice] = 'Post was successfully created.'
- format.html { redirect_to post_url(@post.topic, @post) }
- format.xml { head :created, :location => post_url(@post.topic, @post) }
- end
- end
- rescue ActiveRecord::RecordInvalid => e
- respond_to do |format|
- format.html { render :action => "new" }
- format.xml { render :xml => @post.errors.to_xml }
- end
- end
三、为列表分页,主要是参考了http://www.igvita.com/blog/2006/09/10/faster-pagination-in-rails/ 的来做,但不知为什么topic的有点问题,只能特意为它搞了个partial。
四、ajax效果:像javaeye里的一样,点击板块里最近发表的连接,可以定位到该回复,并有高亮效果(抄了javaeye的,呵呵)。主要修改了post controller的show 和 index.rhtml、show.rhtml(请看附件)
这样,好像整个都基本完成了,也没什么具体的感觉,就是不知道是不是这样去做,匆匆忙忙写完,才发现基本都没什么条理,想到什么就写什么。不知大家在学习和开发中是怎样做的。
另外完善的话,还要加上rich editor,单元测试还没有。。。。还有很多!
ruby 代码
- def show
- @topic = Topic.find(params[:topic_id])
- count = @topic.posts.count(:conditions => "id 小于等于 #{params[:id]}");
- page = (count-1)/10 + 1
- @posts = @topic.posts.find(:all, :page=>{:size=>10, :current=>page})
- @post = Post.find(params[:id])
- respond_to do |format|
- format.html
- format.xml { render :xml => @post.to_xml }
- end
- end
分享到:
相关推荐
Rails::API 是 Rails 的精简版本,针对不需要使用完整 Rails 功能的开发者。 Rails::API 移除了 ActionView 和其他一些渲染功能,不关心Web前端的开发者可更容易、快速地开发应用程序,因此运行速度比正常的 Rails ...
在本篇内容中,我们将深入探讨如何利用Ruby on Rails(简称Rails)这一强大的Web应用程序框架来构建可伸缩且易于维护的RESTful API。Rails以其简洁优雅的语法、高效的开发速度以及良好的社区支持而闻名,这使得它...
这篇博客文章“Rails中应用Ext.tree:以中国的省市地区三级联动选择为例”提供了一个实用的示例,教我们如何利用Ext.js库中的Tree组件来实现这种功能。 首先,让我们了解Rails和Ext.js的基本概念。Rails是基于Ruby...
- **步骤**:通过命令行使用`rails new project_name`来初始化一个新的Rails项目。 - **结构**:新项目将包含默认的目录结构,如`app`、`config`、`db`等,分别用于存放应用程序代码、配置文件、数据库迁移脚本等。 ...
- 测试安装: 创建一个简单的Rails应用来验证是否成功安装。 #### 五、练习作业0-Hello World - **目标**: - 学习如何创建第一个Rails应用程序。 - **过程**: - 创建新项目。 - 设置数据库配置。 - 创建控制器...
2. 创建资源:使用`rails generate controller Posts`生成控制器,再用`rails generate scaffold Post title:string content:text`生成模型和相关的控制器、视图及路由。 3. 迁移数据库:编写迁移文件,更新数据库表...
一个用 Rails3 MongoDB 写的论坛,作者是 chloerei。 作者使用它开的论坛:http://codecampo.com/ 标签:Campo
标题 "Rails相关电子书汇总" 暗示了这个压缩包包含了关于Ruby on Rails框架的电子书籍资源。Ruby on Rails,通常简称为Rails,是一个基于Ruby语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,以...
MVC模式将应用程序分为三个主要部分:模型(Model)处理数据逻辑,视图(View)负责显示用户界面,控制器(Controller)协调模型和视图的交互。在这个图片分享项目中,模型可能包括`User`(用户)、`Image`(图片)...
webpack-rails, 将 web pack与你的Ruby on Rails 应用程序集成 不再维护webpack-rails 不再被维护。 有关详细信息,请参阅 #90. web pack-railsweb pack 为你提供了将 web pack集成到现有的Ruby on Rails 应用程序中...
**高级Rails** Rails,全称为Ruby on Rails,是一款基于Ruby编程语言的开源Web应用程序框架,以其MVC(模型-视图-控制器)架构模式而闻名。"Advanced Rails" 涵盖了Rails开发中的高级主题和技术,是Ruby on Rails...
- **创建项目**:使用`rails new`命令创建一个新的Rails项目。 - **配置Git**:设置版本控制系统,确保代码变更能够被追踪记录。 - **使用Bootstrap进行前端设计**:介绍如何使用Bootstrap框架来快速搭建美观的...
- **MVC架构**:文档中提到的MVC是Rails的核心架构模式,它将应用程序分为三个主要的组件:模型(Model)、视图(View)和控制器(Controller)。这种分离使得代码更加模块化,易于管理和扩展。 ### Rails应用的...
《应用Rails进行敏捷Web开发》中文第三版是针对Ruby on Rails框架的一本详尽指南,主要聚焦于Rails 2.2.2版本。Ruby on Rails(简称Rails)是一款基于Ruby编程语言的开源Web应用程序框架,它遵循“Don't Repeat ...
Ruby on Rails,简称Rails,是基于Ruby语言的一个开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在使Web开发过程更加高效、简洁。本压缩包中的"Ruby on Rails入门经典代码"提供了新手学习...
Rails3 是 Ruby on Rails 框架的一个版本,它提供了一系列强大的命令行工具,使得开发者可以快速地构建和管理Web应用。在本文中,我们将深入探讨Rails3中的常用命令,帮助你更高效地进行开发工作。 首先,新建一个...