这里我们将增强我们的Rubyweblog,以使读者能够添加评论。在这个过程中,我们将了解如何处理Rails中的模型关系,因为单个帖子可" />

Rails和模型关系应用解析

系统 1886 0
<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog336280.html" frameborder="0" width="336" scrolling="no" height="280"></iframe>
这里我们将增强我们的 Ruby web log ,以使读者能够添加评论。在这个过程中,我们将了解如何处理 Rails 中的模型关系,因为单个帖子可能没有评论,也可能有多个评论。

准备工作

我打算从以前的帖子 Rails and Database Migrations 结束的地方开始。 另外 您可以在 BlogDemo.zip 的基础上开始本文的操作 ,此压缩文件 包含了那个帖子中完成的项目。

测试 BlogDemo 项目

  1. 打开 BlogDemo 项目。

  2. 运行项目并浏览 http://localhost:3000/blog 以验证其是否正常运行。

创建评论模型

1. 切换回 Projects 选项卡 右键单击 Models 文件夹并生成一个名为 Comment 的新模型。

  1. 打开 003_create_comments.rb 并将 post_id , created_at comment 列添加到上面 方法如下

    <shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 268.5pt; HEIGHT: 168.75pt" alt="" type="#_x0000_t75"><imagedata o:href="http://weblogs.java.net/blog/bleonard/archive/2007/04/relationships/create_comments.png" src="file:///C:/DOCUME~1/fujiang/LOCALS~1/Temp/msohtml1/01/clip_image001.png"></imagedata></shape>

    Rails和模型关系应用解析

  2. 右键单击 BlogDemo 项目并选择 Migrate Database > To Current Version

    <shape id="_x0000_i1026" style="WIDTH: 453pt; HEIGHT: 79.5pt" alt="" type="#_x0000_t75"><imagedata o:href="http://weblogs.java.net/blog/bleonard/archive/2007/04/relationships/migrate_database.png" src="file:///C:/DOCUME~1/fujiang/LOCALS~1/Temp/msohtml1/01/clip_image003.png"></imagedata></shape>

    Rails和模型关系应用解析

定义模型关系

  1. has_many 关联关系添加到 post.rb
  2. belongs_to 关联关系添加到 comment.rb

重新生成我们的控制器框 架(scaffolding)

在我们第一次创建此项目和生成 Post 模型的 框架 我们没有选择覆盖现有的博客控制器 所以没有创建 框架 操作。这样,我们可以自定义 框架 操作,我们将删除 blog_controller.rb 并再次生成 框架 。注意:不要使用覆盖选项,因为已经自定义了视图,而且不希望放弃这些自定义:

1. 删除 blog_controller.rb

  1. 生成 Scaffold 框架 。将 Model Name 设置为 Post Controller Name 设置为 Blog

  2. 打开最新创建的 blog_controller.rb 它现在拥有所有 框架 操作 索引、列表、显示、新建、创建、编辑、更新和破坏

新建发表评论操作

我们将要修改显示视图,以使其包括可以添加评论的文本区。首先,我们将为发表评论新建一个操作。

  1. 修改显示操作,以便将帖子 id 保存到 flash
  2. 创建下一个 post_comment 操作:

修改要发表评论的视图

  1. 打开 show.rhtml 并在底部添加下列内容:

测试

  1. 在浏览器中,单击 Permalinks 之一,查看一个条目的详细资料。测试添加评论:
    Rails和模型关系应用解析

显示评论

我们的博客还未显示我们所添加的评论,现在我们来修复此问题。

  1. post_comments 实例变量添加到显示操作,以收集评论:
  2. 将下列内容添加到 show.rhtml 以显示评论。

    Comments

    已经存在 其放置的位置可供参考

测试

  1. 添加另一个评论:
    Rails和模型关系应用解析

完成的应用程序

BlogDemoComments.zip




Rails和模型关系应用解析


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论