homeASCIIcasts

Episode Archive

246 AJAX的历史记录状态
The new pushState function in JavaScript allows us to change the full URL with AJAX. This means the back button, reloading, and bookmark support can be easily added.
219 Active Model
In Rails 3 the non-database functionality of Active Record is extracted out into Active Model. This allows you to cleanly add validations and other features to tableless models.
215 Rails 3 中的高级查询
Learn some advanced techniques regarding named scopes and get an introduction to Arel in this episode.
210 Customzing Devise
In this episode we continue looking at devise with a focus on customizing its views, routing and validations.
209 Introducing Devise
Devise is a full-featured authentication solution which handles all of the controller logic and form views for you. Learn how to set it up in this episode.
207 语法高亮
Three popular choices for syntax highlighting in Rails applications are discussed in this episode: CodeRay, Ultraviolets and Pygments.
206 ActionMailer in Rails 3
Action Mailer has been rewritten for Rails 3 providing a much cleaner API with its use of the Mail gem.
205 Unobtrusive JavaScript
Rails 3 makes great use of unobtrusive JavaScript, helping keep content and behaviour separate.
204 XSS Protection in Rails 3
In previous versions of Rails it was easy for your application to be vulnerable to cross-site scripting attacks. Rails 3 solves this problem but automatically escaping output.
203 Routing in Rails 3
Rails 3 has a new routing interface. In this episode we show how to translate the old interface into the new one and show some of the new features.
202 Rails 3中的Active Record的查询变化
Rails 3 introduces a new query interface for performing finds in Active Record. See how it works along with the changes in named scopes.
201 Bundler
Bundler is the way to manage gem dependencies in Rails 3.0. Learn how to install gems and lock them down in this episode.
197 嵌套模型的form第二部分
Add and remove nested model fields dynamically through JavaScript using either Prototype or jQuery.
196 嵌套模型的form第一部分
The accepts_nested_attributes_for method, introduced in Rails 2.3, makes handling multiple models in a form much easier. Find out how to use it in this episode.
194 MongoDB 和 MongoMapper的示例用法简介
MongoDB is a document-based database engine. Learn how to use it in Rails application with Mongomapper in this episode.
193 非数据库数据模型
If you want to create a model without an associated database table all you need to do is define a couple methods in the model.
191 Mechanize
Mechanize extends Nokogiri, allowing you to interact with websites, filling in forms and clicking links.
190 使用Nokogiri进行页面抓取
Using Nokogiri and SelectorGadget together makes screen-scraping easy.
189 嵌入关联
in this episode we show you how to embed a one-to-many or many-to-many association in a single integer field.
188 Declarative Authorization
Declarative authorization provides an advanced and powerful solution for role-based authorization
187 Testing Exceptions
Even well tested code can sometimes raise exceptions. In this episode we show you how to be notified about this and how to resolve these errors by making use of integration tests.
182 Cropping Images
In this episode we create a slick user interface for cropping images using Paperclip and JCrop.
181 Include vs Joins
The find method's include and joins options can be a little confusing as they are so similar. Find out when to use which one in this episode.
180 Finding Unused CSS.
As websites change stylesheets can become filled with unused selectors. The Deadweight gem helps to determine which ones can be removed.
179 Seed Data
Rails 2.3.4 introduces a new convention for creating any seed data that your application needs. This means that you no longer have to put seed data in your migrations.
178 七个安全技巧
Security is paramount in your Rails applications. Here we show seven commons security flaws from mass assignment to CSRF.
177 Model Versioning
If you need to keep track of the changes to an ActiveRecord model and switch between versions the Vestal Versions gem is well worth considering.
175 AJAX浏览记录和书签
AJAX-enabled sites do not usually play well with bookmarking or the brower's page history. In this episode we fix that with a simple jQuery plugin.
174 用AJAX进行分页
Use jQuery to add unobtrusive JavaScript links to a paginated list.
172 Touch and Cache
Rails 2.3.3 has a new feature called 'touch'. In this episode we use it to auto-expire associated caches.
171 Delayed Job
The delayed_job plugin provides an excellent way of getting long running tasks running in the background.
169 动态页面缓存
Use a combination of page caching and JavaScript to create a fast cached page that can still be updated dynamically.
168 订阅点解析
In this episode we use two different techniques to parse an RSS feed with Feedzirra.
167 更多关于虚拟属性
Make use of virtual attributes and callbacks to implement tagging in a blogging application.
165 批量修改记录
Select multiple records with checkboxes and edit them all on one form. Find out how to use virtual attributes to update values relatively.
163 自引用关联
In this episode we create a small social networking application and use a self-referential association to link users with their friends.
155 Beginning With Cucumber
Cucumber is a testing framework that lets you develop with Behaviour-Driven Development. We develop a new application using BDD in this episode.
154 多态关联
Polymorphic associations can be a little tricky to understand. In this episode we'll show you how to create one and use it in controllers and views.
136 jQuery
In this episode we recreate the AJAX form submission we did back in episode 43 but with jQuery instead of Prototype and RJS.
134 Paperclip
Paperclip makes it easy to add attachments to a model. Find out how in this episode.
16 Virtual Attributes
Keep your forms flexible by adding virtual attributes to your model. This powerful technique allows you to create form fields which may not directly relate to the database.