`
solaz3
  • 浏览: 73130 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

Rails3教程系列之九:Rails3入门(8, 完结篇)

阅读更多

通过前面8篇文章的学习, 我们已经基本掌握了如何快速开发一个简单的博客应用程序, 本章作为入门的完结篇, 我们将要学习来为博客加上ujs, 让我们的博客加上一点ajax效果.

 

ujs全称Unobtrusive Javascript, 这也是Rails3的重要特性之一. Rails3的ujs利用了HTML5中 data-*@ 属性的巨大优势, 而摒弃了以前基于Prototype JS的构造器. (在rails1和rails2中, 我们使用ajax可能会利用 xxx.rjs 或者 xxx.js.builder, 在里面可以使用封装prototype的Page对象)

 

1. 让Rails3使用jQuery

轻量级js框架jquery相信大家一定不会陌生, 本教程中的ujs教程也是基于jquery来写的(当然你也可以使用prototype).

首先, 下载最新的jquery然后放入 public/javascripts 文件夹下面:

 

curl -L http://code.jquery.com/jquery-1.4.3.min.js > public/javascripts/jquery.js

 

同时我们也需要把原来的prototype ujs的rails.js 改成 jquery-ujs的rails.js:

 

$ curl -L http://github.com/rails/jquery-ujs/raw/master/src/rails.js > public/javascripts/rails.js

 

下载后可以看下javascripts文件夹, 里面有application, controls, dragdrop, effects, jquery, prototype 以及 rails 等js文件, 出来jquery以外, 其他都是生产bolg应用时rails加进去的.

 

现在打开 config/application.rb 文件, 修改下面的配置:

 

 

# JavaScript files you want as :defaults (application.js is always included).
    config.action_view.javascript_expansions[:defaults] = %w(jquery rails)

 

上面的代码告诉rails, :default 符号的定义现在改成 jquery和rails啦, 启动我们的博客程序, 查看源代码中的<head>中的<script>是不是这3个js脚本.

 

2. 给评论加上ujs

当用户发表评论后, 浏览器往往会刷新页面, 那么使用ajax方式提交可以实现局部刷新, 从而避免数据交互开销以及增加客户体验.

 

现在我们修改 views/comments/_form.erb:

 

<%= form_for([@post, @post.comments.build], :remote=>true) do |f| %>
...

 

 :remote=>true告诉rails, 该表单将使用xmlhttprequest方式提交数据.

 

接着, 我们修改 CommentsController下面的create动作:

 

class CommentsController < ApplicationController
  before_filter :authenticate, :only => :destroy
  respond_to :html, :js, :xml
  
  def create
    @post = Post.find(params[:post_id])
    @comment = @post.comments.build(params[:comment])
    respond_with @comment if @comment.save
  end

  ...
end

 

还记得先前教程中的 respond_to 声明吗? 如果评论保存成功, rails将寻找相应的模板, 如果存在 create.html.erb 将渲染html, 如果存在 create.js.erb 当渲染js.

 

那么现在我们可以在 views/comments/下面创建 create.js.erb 模板了:

 

$('#comments').append("<%= escape_javascript(render @comment) %>"); // 插入 _comment 局部模板
$('#comment_body').val(""); // 清空表单

 

 很熟悉? 是的, 完全就是jquery的写法, 只不过我们使用了一个 escape_javascript 来生成一段无<script>标记的代码.

 

现在, 我们需要修改下 Posts/ 下面的show.html.erb 模板:

 

<h2>Comments</h2>
<div id="comments">
    <%= render @post.comments %>
</div>

 

 

好了, 现在试试吧.

 

3. 删除文章和评论

最后我们试着把 删除post以及评论 也加上ujs效果:

posts/index.html.erb:

 

<% @posts.each do |post| %>
  <tr id='<%= "post_#{post.id}" %>'>
    <td><%= post.name %></td>
    <td><%= post.title %></td>
    <td><%= post.content %></td>
    <td><%= link_to 'Show', post %></td>
    <td><%= link_to 'Edit', edit_post_path(post) %></td>
    <td><%= link_to 'Destroy', post, :confirm => 'Are you sure?', :method => :delete, :remote => true %></td>
  </tr>
<% end %>

PostsController#destroy:

   def destroy

    @post = Post.find(params[:id])
    @post.destroy
    respond_with(@post)
end
 

 添加 views/posts/destroy.js.erb:

 

$('#post_<%= @post.id %>').hide(); //隐藏删除的记录.

 

最后的删除评论就留给大家吧 : )

 

所有的Rails3入门现在正式结束, 在后面的教程中, 我们将重点学习Rails3中的各个模块, 感谢大家收看!

分享到:
评论
5 楼 dbsGen 2012-10-24  
很有用,多谢博主
4 楼 feifan_5223 2012-04-27  
不知道你在说什么
3 楼 wtaoli 2011-04-01  
楼主 能把这个入门的文章 做成pdf不?可以下载下来 在本地看  多谢
2 楼 wtaoli 2011-03-30  
博主写的真不错,看了之后 豁然开朗
1 楼 wlon 2011-01-11  
看完了,有不少帮助,对与rails3 和 rails2 的区分理解明确了。 谢谢博主

相关推荐

    Rails入门教程一(翻译).pdf

    《Rails入门教程一》是针对初学者的一份详尽指南,旨在帮助读者快速掌握Ruby on Rails框架的基础知识。Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式...

    Rails 101 入门电子书

    ### Rails 101 入门电子书知识点详解 #### 一、简介 《Rails 101 入门电子书》是一本非常适合初学者直接入门的书籍,它由xdite编写并出版于2014年6月10日。本书主要针对的是希望学习Ruby on Rails框架的读者,特别...

    Ruby on Rails入门例子

    在"Ruby on Rails入门例子"中,我们可能会遇到以下关键概念: - **路由(Routes)**:Rails的路由系统将URL映射到特定的控制器动作,定义了应用的导航结构。在`config/routes.rb`文件中配置路由规则。 - **生成器...

    Ruby on Rails入门经典代码

    本压缩包中的"Ruby on Rails入门经典代码"提供了新手学习Rails的宝贵资源,帮助初学者快速掌握这个强大的框架。 1. **Rails基础知识**: - MVC架构:Rails的核心设计模式,模型负责数据处理,视图负责展示,控制器...

    Ruby on Rails入门经典

    在Ruby on Rails入门经典中,你将学习到以下核心知识点: 1. **Ruby语言基础**:首先,你需要了解Ruby的基础语法,包括变量、数据类型(如字符串、整数、浮点数、数组、哈希)、控制结构(如条件语句if/else,循环...

    [Rails] Rails 3 入门教程 (英文版)

    [Apress] Rails 3 入门教程 (英文版) [Apress] Beginning Rails 3 (E-Book) ☆ 出版信息:☆ [作者信息] Cloves Carneiro Jr., Rida Al Barazi [出版机构] Apress [出版日期] 2010年09月01日 [图书页数] 400页...

    Ruby on Rails 3 Tutorial

    - **《Ruby on Rails 3 教程》**:由Michael Hartl编写的一本经典教材,被广泛认为是学习Rails的最佳资源之一。 - **教学方法**: - **示例驱动**:通过具体的项目示例来讲解Rails的各种功能。 - **循序渐进**:从...

    Ruby on Rails:Rails框架入门.docx

    Ruby on Rails:Rails框架入门.docx

    rails3入门指南

    ruby on rails文档,rails3入门指南

    Ruby on Rails入门权威经典

    总的来说,《Ruby on Rails入门权威经典》是一本内容丰富、实践性强的教程,它不仅教授了Ruby on Rails的基础知识,还提供了许多实用技巧和最佳实践,是初学者入门Rails的理想选择。通过阅读本书,读者不仅能学会...

    Ruby on Rails 入门经典教程

    通过《Ruby on Rails 入门经典教程》,无论你是编程新手还是希望转行Web开发的计算机操作者,都可以系统地掌握Ruby on Rails的核心知识,开启Web开发之旅。aybook.cn_rinumzwb1227.pdf这份文档正是这个宝贵资源的...

    ruby on rails入门基础

    以上是Ruby on Rails入门的基础知识,通过学习这些,你可以开始构建自己的Web应用。对于初学者,建议跟随一个详细的教程逐步实践,结合实际案例理解Rails的工作原理。在学习过程中,不断练习和调试代码,加深对框架...

Global site tag (gtag.js) - Google Analytics