RailsCasts
文章平均质量分 76
dazhi_100
这个作者很懒,什么都没留下…
展开
-
RailsCasts31 Formatting Time 时间的格式化
task模型有个datatime型的属性due_at ,现想在每个task后将due_at展示出来。编辑 /app/views/tasks/index.html.erb,使得due_at均显示在task后。ruby"taskList"> % @tasks.each do |task| %> >%= task.name %> = task.due_翻译 2014-09-05 14:19:29 · 1001 阅读 · 0 评论 -
RailsCasts18 Looping Through Flash 使用循环展现flash
有时layout文件中会展示几种flash messages;每种flash在展现前均会判断是否为nil,则均需要花费3行代码,如下:ruby ASCIIcasts 使用循环可有效的减少代码量,如下: key %>content_tag需翻译 2014-09-01 22:22:17 · 758 阅读 · 0 评论 -
RailsCasts20 Restricting Access 限制访问权限
限制访问权限在上一篇中,我们在文章列表页增加了编辑和删除操作的连接,暂时还没有进行访问控制;以至于所有访问者都能看到并进行操作。转载 2014-09-01 23:20:33 · 720 阅读 · 0 评论 -
RailsCasts17 HABTM Checkboxes 更新多对多的关系
两个model,Product and Category;彼此之间有has_and_belongs_to_many的关系;期望在编辑project时,同时编辑project与category之间的关系;编辑project的界面如下:添加 checkboxescheck_box and check_box_tag方法均可向form中添加checkboxes;由于需要重写check翻译 2014-09-01 22:09:46 · 805 阅读 · 0 评论 -
RailsCasts21 Super Simple Authentication 超级简单的验证机制
在上一篇中,演示了如何根据当前登陆的用户是否具有管理员权限来显示或隐藏指向文章管理的链接。实现方式是通过在ApplicationController中增加一个admin?方法,如果方法返回true则显示,否则隐藏这些链接。接下来是如何实现这个方法的逻辑,应该是根据登陆用户的情况决定是否显示。有多种实现方法可以通过多种方式来实现一个登陆系统。可以从模型到界面自己开发一套,当然可以借助于一个名转载 2014-09-01 23:26:05 · 611 阅读 · 0 评论 -
RailsCasts15 Fun with Find Conditions find中的查询条件
这次我们来讨论一下关于find方法查询条件的话题。以下是Rails Console输出的SQL查询语句。对应的动作是查找所有优先级为3的未完成任务。terminal >>Task.count(:all,:conditions=>["complete=? and priority=?,false,3])=>2对应的SQL查询是SQL SELE转载 2014-09-01 21:08:44 · 602 阅读 · 0 评论 -
RailsCasts16 Virtual Attributes 虚拟属性
下面是一个用户注册表单,可以输入名、姓和密码。数据库中也定义了这些字段:ruby create_table "users", :force => true do |t| t.string "first_name" t.string "last_name" t.string "password" end转载 2014-09-01 21:20:45 · 633 阅读 · 0 评论 -
RailsCasts19 Where Administration Goes 管理员权限部署
接下来的三讲中,我来介绍一种为站点增加管理员权限的最佳实践。最初的时候(如上图所示),页面没有进行文章管理的能力;所有操作都是在Rails Console通过命令行或更土一点直接修改数据库完成的。后来的版本里为站点增加了通过页面操作进行管理的能力,不过是开发独立的管理页面方式实现。ruby script/generate scaffold episode "admin/转载 2014-09-01 23:16:15 · 699 阅读 · 0 评论 -
RailsCast24 The Stack Trace 桟跟踪
程序运行中难免遇到异常,当系统抛出异常后,Rails会显示如下的一个页面。在开发过程中你经常会看到。显示异常信息的页面。这个页面中列出错误信息及异常堆栈。第一眼看过去可能有点晕,不过这些信息会为你定位问题提供很大的帮助(页面比较长,截图是其中的一部分)。在具体分析眼前这个错误之前,先介绍一下什么是异常堆栈。什么是异常堆栈?在irb中,我们抛出一个异常。Ruby框转载 2014-09-02 09:45:04 · 639 阅读 · 0 评论 -
RailsCast26 Hackers Love Mass Assignment rails中按params创建、更新model时存在的安全隐患
Mass assignment是rails中常用的将表单数据存储起来的一种方式。不幸的是,它的简洁性成了黑客攻击的目标。下面将解释为什么及如何解决。上述表单为一个简单的注册表单。当用户填入name,点击提交时,一个新用户被创建。用户模型被如下定义:rubycreate_table :users do |t| t.string :name t.boolean翻译 2014-09-02 21:32:04 · 1249 阅读 · 0 评论 -
RailsCasts23 Counter Cache Column 计数缓存列
和上一篇一样,咱们聚焦于ActiveRecord数据库查询性能这个话题。如下图所示,页面列出一系列项目(Project)以及其中包含的任务(Task)数。以下是ProjectsController和index.html.erb。ruby class ProjectsController ApplicationController def index @pro转载 2014-09-02 08:31:26 · 623 阅读 · 0 评论 -
RailsCasts22 Eager Loading 贪婪加载
要想试图优化你的Rails应用,首先应当把目光投向数据库访问操作。减少对数据库的访问次数能对应用的运行效率产生巨大的提升作用。下面来介绍一种叫做贪婪读取的技术这个示例应用包含两个模型分别是任务(Task)和项目(Project)图中的页面列出了一系列任务以及每个任务所属于的项目。在TaskController代码里便利所有的任务,在视图中通过循环将他们一一列出。ruby转载 2014-09-02 08:20:43 · 603 阅读 · 0 评论 -
RailsCast25 SQL Injection SQL注入
真的有人会把他的孩子起名为 Robert'); DROP TABLE Students;吗? - XKCD No. 327接下来的几篇,我们会讨论一些关于安全的话题,以免你的站点频频遭受黑客的攻击。其中第一个基本安全原则就是永远不要信赖来自用户的输入。在Rails中来讲就是说,从页面参数中传递进来的数据一定要小心对待。用户可以有意的设置参数值,甚至可以设置参数键,所以得谨慎的使用。这个原则转载 2014-09-02 10:07:00 · 630 阅读 · 0 评论 -
RailsCase29 group_by Month 分组函数group_by
在大多数的rails应用中,很多都涉及到分组,如task模型有due date属性,想将task按照月份进行分组,此时可使用group_by函数,下图为所有task的list。为了了解group_by函数,可先了解如此的命令行:terminal>> a = (1..20).to_a=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,翻译 2014-09-03 14:35:53 · 1909 阅读 · 0 评论 -
RailsCasts13 Dangers of Model in Session 将model放在session中是危险的
In this episode we’ll show you why it’s a bad idea to store a model in the session.在此结尾ruby class UserController ApplicationController def prepare session[:user] = User.find(:f翻译 2014-08-29 16:30:58 · 709 阅读 · 0 评论 -
RailsCasts10 Refactoring User Name Part 1 重构User Name(一)
从这一集开始,我们一起探讨一下关于重构的话题。重构是指在不改变软件功能的前提下对代码进行优化,以达到去除冗余代码、提高代码可读性及可维护性的的目的。下面页面是一个用户列表,点击用户名后显示用户资料。需要注意的是,有些用户有中间名(middle name)有些则没有。浏览器中显示的列表页及用户资料页.先看看列表页的代码:ruby Users/h1> ">转载 2014-08-29 15:07:57 · 537 阅读 · 0 评论 -
RailsCasts9 Filtering Sensitive Logs 过滤敏感日志
这是一个用户注册页面,填入用户名和密码按确认提交。查看后台日志的话,能够发现所有页面提交的参数都是以明文方式保存在日志中的。terminal Processing UsersController#create (for 127.0.0.1 at 2009-01-02 10:13:13) [POST]Parameters: {"user"=>{"name"=>"eifi转载 2014-08-29 14:45:33 · 701 阅读 · 0 评论 -
RailsCasts32 Time in Text Field 时间类型的输入域
Above is an application that displays a list of tasks. Clicking on the edit link for a task takes us to the edit page for that task. The edit page uses the datetime_select helper method to render th翻译 2014-09-05 15:47:26 · 633 阅读 · 0 评论 -
RailsCases33 Making a Plugin 创造插件
In the last episode we showed how to edit a datetime column with a text field, rather than with a series of dropdown menus. The date and time for a task were entered in a text field then parsed as a d转载 2014-09-05 16:14:07 · 662 阅读 · 0 评论 -
RailsCasts 1
1、rubyclass ApplicationController ActionController::Base def current_user User.find(session[:user_id]) endend这是一个在Action中的场景,上面的代码调用User的find方法传入会话中的user_id从数据库中读取当前登陆的用转载 2014-08-27 16:27:25 · 602 阅读 · 0 评论 -
RailsCasts 3 Find Through Association 通过级联查找
这个例子中我们有一个Project类,其中通过has_many方法定义包含多个Task:rubyclass Project ActiveRecord::Base has_many :tasksend在Task任务类中通过belongs_to定义它属于一个Project:rubyclass Task ActiveRecord:转载 2014-08-27 19:06:28 · 653 阅读 · 0 评论 -
RailsCasts5 Using with_scope 使用with_scope
这次,我们讨论一下with_scope方法。下面的Task中定义了一个返回所有未完成任务的类方法find_incomplete。rubyclass Task ActiveRecord::Base belongs_to :project def self.find_incomplete find_all_by_complete(false, :order =转载 2014-08-27 20:02:07 · 580 阅读 · 0 评论 -
RailsCasts4 Move Find into Model 将find转移至model中
这个例子是对Task调用find命令进行查询操作,查询所有未完成的任务并按照创建时间降序排列。如下所示:rubyclass TaskController ApplicationController def index @tasks = Task.find_all_by_complete(:false, :order => "created_at DESC")转载 2014-08-27 19:17:50 · 723 阅读 · 0 评论 -
RailsCasts 2
下面给大家演示一个在Rails中更加优雅地使用find方法进行数据查询的方式。例子中Task类有一个属性complete表明任务是否已经完成(complete字段是false意味着未完成),incomplete和last_incomplete方法分别用来返回所有未完成的和最后一个未完成的任务。rubyclass TaskController ApplicationContr转载 2014-08-27 16:33:12 · 555 阅读 · 0 评论 -
RailsCasts6 Shortcut Blocks with Symbol to_proc 将Symbol 转化为to_proc来简化block
下面代码find方法中这种看起来奇怪的语法,一个&符号后面跟着一个名字,叫做to_proc。是Rails对Ruby的一点功能扩充。rubyclass Project ActiveRecord::Base has_many :tasks def self.all_names find(:all).collect(&:name) endend转载 2014-08-27 20:15:21 · 538 阅读 · 0 评论 -
RailsCasts8 Layouts and content_for Layouts及content_for
下面分别是全局的布局文件application.rhtml及index Action页面定义:ruby DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> Todo List/title>转载 2014-08-29 14:34:35 · 581 阅读 · 0 评论 -
RailsCasts7 All About Layouts Layout 详谈
这次咱们聊聊页面布局文件。布局文件其实也是一个页面,用来定义一些公共的或者框架的页面结构。普通的页面文件再嵌入到布局文件预留的空间中来形成整个页面的样子。布局文件是可以在各个页面之间公用的公共资源。全局范围布局文件下面的页面列出所有的项目名称ruby 这是一个常规简单的页面:比如说,我们想为这个站点的每一个页面都增加一个页首、图标、导航菜单栏转载 2014-08-29 14:28:37 · 565 阅读 · 0 评论 -
RailsCasts11 Refactoring User Name Part 2 重构User name(二)
在上一篇我们讨论了重构,并演示了一个通过将代码移动到模型中以达到去除冗余的重构实例。不过这段代码依然还有优化的余地。ruby class User ActiveRecord::Base def full_name name = first_name + ' ' name += "#{middle_initial}. " unless middle_initi转载 2014-08-29 15:22:51 · 621 阅读 · 0 评论 -
RailsCasts14 Performing Calculations on Models 模型中预置的统计函数
你知道吗?ActiveRecord预制了好多对模型中数据进行统计计算的方法。我们拿Task类为例。类中有一个标明任务优先级的字段priority。打开Rails Console,查看操作的回显,其中SQL语句是方法在后台执行的查询。查询第一个任务的优先级:terminal >> Task.first.priority=>4对应的SQL查询是SQL转载 2014-08-29 16:36:54 · 553 阅读 · 0 评论 -
RailsCasts12 Refactoring User Name Part 3 重构User name(三)
在上一篇和更前一篇里,我们讨论了与重构、测试有关的话题。截止上一篇结束时,完成了对User类的重构,但是测试用例代码还有些乱。让我们看看如何清理一下。rubyrequire 'test_helper' class UserTest < ActiveSupport::TestCase test "full name without middle initial" do转载 2014-08-29 15:40:01 · 585 阅读 · 0 评论 -
RailsCase27 Cross Site Scripting 跨站点脚本攻击
跨站点脚本是开发过程中经常需要考虑的安全问题。此种情形发生在允许用户直接输入html、javascript脚本时。在下述的website中,我们并没有过滤输入的内容,导致一些安全漏洞。如果在输入框中输入由包围的内容,当页面被加载的时候,脚本将被执行,每次均将在前端展示。例如,如果输入alert(’hello’)并保存,每次浏览此页面时,都将看到alert的窗口。嵌入页面的javas翻译 2014-09-03 09:57:48 · 1104 阅读 · 0 评论