Rails和模型关系应用解析
来源:互联网 发布:食品开淘宝店的要求 编辑:程序博客网 时间:2024/05/16 02:39
这里我们将增强我们的 Ruby web log,以使读者能够添加评论。在这个过程中,我们将了解如何处理 Rails 中的模型关系,因为单个帖子可能没有评论,也可能有多个评论。准备工作
测试 BlogDemo 项目
创建评论模型
定义模型关系
重新生成我们的控制器框架(scaffolding)
新建发表评论操作
修改要发表评论的视图
测试
显示评论
测试
完成的应用程序
BlogDemoComments.zip
准备工作
我打算从以前的帖子 Rails and Database Migrations 结束的地方开始。另外,您可以在 BlogDemo.zip 的基础上开始本文的操作,此压缩文件包含了那个帖子中完成的项目。
测试 BlogDemo 项目
- 打开 BlogDemo 项目。
- 运行项目并浏览 http://localhost:3000/blog 以验证其是否正常运行。
创建评论模型
1. 切换回 Projects 选项卡,右键单击 Models 文件夹并生成一个名为 Comment 的新模型。
- 打开 003_create_comments.rb 并将 post_id, created_at 和 comment 列添加到上面,方法如下:
- 右键单击 BlogDemo 项目并选择 Migrate Database > To Current Version
定义模型关系
- 将 has_many 关联关系添加到 post.rb:
- 将 belongs_to 关联关系添加到 comment.rb:
重新生成我们的控制器框架(scaffolding)
在我们第一次创建此项目和生成 Post 模型的框架时,我们没有选择覆盖现有的博客控制器,所以没有创建框架操作。这样,我们可以自定义框架操作,我们将删除 blog_controller.rb 并再次生成框架。注意:不要使用覆盖选项,因为已经自定义了视图,而且不希望放弃这些自定义:
1. 删除 blog_controller.rb
- 生成 Scaffold(框架)。将 Model Name 设置为 Post,Controller Name 设置为 Blog。
- 打开最新创建的 blog_controller.rb,它现在拥有所有框架操作(索引、列表、显示、新建、创建、编辑、更新和破坏)。
新建发表评论操作
我们将要修改显示视图,以使其包括可以添加评论的文本区。首先,我们将为发表评论新建一个操作。
- 修改显示操作,以便将帖子 id 保存到 flash:
- 创建下一个 post_comment 操作:
修改要发表评论的视图
- 打开 show.rhtml 并在底部添加下列内容:
测试
- 在浏览器中,单击 Permalinks 之一,查看一个条目的详细资料。测试添加评论:
显示评论
我们的博客还未显示我们所添加的评论,现在我们来修复此问题。
- 将 post_comments 实例变量添加到显示操作,以收集评论:
- 将下列内容添加到 show.rhtml 以显示评论。
和Comments
已经存在,其放置的位置可供参考:
测试
- 添加另一个评论:
完成的应用程序
BlogDemoComments.zip- Rails和模型关系应用解析
- Rails和模型关系应用解析
- Rails和模型关系应用解析
- Rails和模型关系应用解析
- Rails和模型关系应用解析
- Rails和模型关系应用解析
- Rails和模型关系应用解析
- Rails中嵌套表单的解决:模型关系是一对一和一对多的情况
- 关系模型和关系运算
- 关系模型和关系代数
- 概念模型和关系模型
- Ruby on Rails中的ORM(对象关系模型)一。
- Rails多层关系子模型验证错误在父模型中的处理
- 对象的构成模型和关系模型
- Rails(栈和队列简单应用)
- 概念模型与关系模型和关系规范化
- Ruby on Rails学习笔记(6)--ruby on rails 和mysql数据类型的对应关系
- ROR模型和数据库操作(第六章ruby on rails)
- 使用NetBeans将GUI连接到Derby数据库
- 将NetBeans Profiler集成到Sun Java System Web Server 7.0
- 基于NetBeans的Java EE客户端应用程序(二)
- 基于NetBeans的Java EE客户端应用程序(一)
- NetBeans6.0中的用户界面设计
- Rails和模型关系应用解析
- NetBeans下JSF框架编码简介
- 在NetBeans IDE 中使用Java DB数据库
- NetBeans下使用Ajax文本完成组件
- 现实生活中的Swing和NetBeans平台开发
- 将遗留Web应用程序移植到NetBeans
- 在BPEL中使用相关集、属性和属性别名
- Schliemann:在NetBeans6.0中集成脚本语言
- 在NetBeans中使用MySQL创建简单Web应用程序(二)