Rails 3 提供了 match 方法供我们自定义 routes,然而我们要小心使用它以避免“跨站脚本攻击”(XSS Attack)。比如像这样的 routes:
注:(r3 代表 Rails 3,r4 代表 Rails 4)
# routes.rb| #Model | |
| @user.should have(1).error_on(:username) # Checks whether there is an error in username | |
| @user.errors[:username].should include("can't be blank") # check for the error message | |
| #Rendering | |
| response.should render_template(:index) | |
| #Redirecting | |
| response.should redirect_to(movies_path) |
| #encoding: utf-8 | |
| require "fileutils" | |
| namespace :my_db do desc "Backup project database. Options: DIR=backups RAILS_ENV=production MAX=7" | |
| desc "usage - bundle exec rake my_db:backup RAILS_ENV=production MAX=15 DIR=db/db.bak" | |
| task :backup => [:environment] do | |
| # config base dir | |
| datestamp = Time.now.strftime("%Y%m%d%H%M") | |
| base_path = Rails.root | |
| backup_folder = File.join(base_path, ENV["DIR"] || "backups") | |
| FileUtils.mkdir_p(backup_folder) unless File.exist?(backup_folder) |
| # 30 minutes Lisp in Ruby | |
| # Hong Minhee <http://dahlia.kr/> | |
| # | |
| # This Lisp implementation does not provide a s-expression reader. | |
| # Instead, it uses Ruby syntax like following code: | |
| # | |
| # [:def, :factorial, | |
| # [:lambda, [:n], | |
| # [:if, [:"=", :n, 1], | |
| # 1, |
| source/_includes/custom/head.html中添加js代码: | |
| <script> | |
| function addBlankTargetForLinks () { | |
| $('a[href^="http"]').each(function(){ | |
| $(this).attr('target', '_blank'); | |
| }); | |
| } | |
| $(document).bind('DOMNodeInserted', function(event) { |
| #!/usr/bin/env ruby | |
| # Libraries::::::::::::::::::::::::::::::::::::::::::::::::::::::: | |
| require 'rubygems' | |
| require 'sinatra/base' | |
| require 'slim' | |
| require 'sass' | |
| require 'coffee-script' | |
| # Application::::::::::::::::::::::::::::::::::::::::::::::::::: |
最近在看Sinatra 1.3.5的源码。在Sinatra::Helpers模块中看到一个名为uri的方法,用来将一个相对路径转换为绝对路径。在该函数的代码中看到分别针对request.script_name和request.path_info进行了处理。但是并不清楚这两个参数的区别,于是做了一些reseach。
二者在RFC3875中有如下定义:
4.1.13. SCRIPT_NAME
The SCRIPT_NAME variable MUST be set to a URI path (not URL-encoded) which could identify the CGI script (rather than the script's output). The syntax is the same as for PATH_INFO (section 4.1.5) >
| Sub ExcelPrint | |
| Call exportToExcel_ALL() | |
| End Sub | |
| Public Function exportToExcel_ALL() | |
| Dim aryExport(14,3) | |
| aryExport(0,0) = "CH57" | |
| aryExport(0,1) = "直营业绩周报表" | |
| aryExport(0,2) = "A1" | |
| aryExport(0,3) = "data" |
| require 'goto' | |
| def test | |
| frame_start | |
| label(:start) { goto :b } | |
| label(:a) { print "world!\n"; goto :c } | |
| label(:b) { print "hello "; goto :a } |
| =Navigating= | |
| visit('/projects') | |
| visit(post_comments_path(post)) | |
| =Clicking links and buttons= | |
| click_link('id-of-link') | |
| click_link('Link Text') | |
| click_button('Save') | |
| click('Link Text') # Click either a link or a button | |
| click('Button Value') |