Rails笔记《一》Routing

简介:

Routing路由

 

config/routes.rb

 

match 'patients/:id' => 'patients#show'

<%= link_to 'Show', patient_path(@patient) %>

resources :patiends

GET POST PUT DELETE HEAD

get index
get new
post create
get show
get edit
put update
delete destroy

photos_path

new_photo_path

edit_photo_path(:id)

photo_path(:id)

namespace :admin do
  resources :posts, :comments
end

/admin/posts

/admin/posts/new
/admin/posts
/admin/post/:id
/admin/post/:id/edit
/admin/post/:id
/admin/post/:id

scope :module => 'admin' od
  resources :posts, :comments
end

resources :posts, :comments, :module => 'admin'

scope '/admin' do
  resources :posts, :comments, 
end

resources :posts, path => '/admin/posts'

resources :posts do
  resources :comments
end

post_comments_url
edit_post_comment_url
post_comment_url(@comment)

csrf

cross-site request forgery
resources should never be nested more than 1 level deep.

url_for


<%= link_to 'ad detail', maganize_ad_path(@maganize,@ad) %>
<%= link_to 'ad detail', url_for(@magazine, @ad) %>
<%= link_to 'ad detail', [@magazine,@ad] %>
<%= link_to 'magazine detail', @magazine %>


show 
new
create
edit
update
index
destroy

resources :photos do
 member do 
   get 'preview'
 end
end

preview_photo_url
preview_photo_path

resources :photo do
  get 'preview', :on => :member
end

/photo/11/preview
photoscontroller.preview

resource :photos dd
  collection do
    get 'search'
  end
end

resoruce :photos do
  get 'search', :on => :collection
end

/photos/search

photoscontroller.search


invoke show action of photoscontroller


match ':controller(/:action(/:id))'

match ':controller/:action/:id/:userid'

match ':controller(/:action(/:id))', :controller => admin\/[^\/]+/

match ':controller/:action/:id/with_user/:userid'

match 'photos/:id' => 'photos#show'

match 'photos/:id' => 'photos#show', :default => { :format => 'jpg' }

match 'exit' => 'sessions#destroy', :as => :logout

logout_url

logout_path => /exit

match 'photos/show' => 'photos#show', :via => :get

get 'photos/show'

match 'photos/show' => 'photos#show', :via => [:get, :post]

match 'photos/:id' => 'photos#show', :constraint => { :id => /[A-Z]\d{5}/ }

/photos/A12345

match 'photos/:id' => 'photos#show', :id => /[A-Z]\d{5}/

match '/:id' => 'posts#show', :constraints => { :id => /\d.+/ }

match '/:username' => 'users#show'

match 'photos', :constraints => { :subdomain => 'admin' }

namespace :admin do
  constraints :subdomain => 'admin' do
    resources :photos
  end
end


class BlacklistConstraint
  def initialize
    @ips = Blacklist.retrieve_ips
  end
  
  def matches?(request)
    @ips.include?(request.reqmote_ip)
  end
end

TwitterClone::Application.routes.draw do
  match '*path' => 'blacklist#index',
        :constraints => BlacklistConstraint.new
end


match 'photos/*other' => 'photos#unknown'

photos/12 => params[:other]=12
photos/long/path/to/12 => params[:other]=long/path/to/12

match 'books/*section/:title' => 'books#show'

books/some/section/last-world => params[:section]=some/section, params[:title]=last-world

match '*a/foo/*b' => 'test#index'

zoo/woo/foo/bar/baz => params[:a]=zoo/woo, params[:b]=bar/baz

match '/stories' => redirect('/posts')

match '/stories/:name' => redirect('/posts/%{name}')

match '/stories/:name' => redirect  { |params| '/posts/#{params[:name].pluralize}' }
match '/stories' => redirect { |p,req| '/posts/#{req.subdomain}' }

301 move permanently redirect

root :to => 'page#main'

resources :photos, :controller => 'images'

/photos => imagescontroller

/photos
/photos/new
/photos
/photos/:id
/photos/:id/edit

photos_url
new_photo_path

resources :photos, :constraints => { :id => /[A-Z][A-Z][0-9]+/ }

no longer math /photos/1, instead, /photos/AA8 would match.

constraints(:id => /[A-Z][A-Z][0-9]+/) do
  resources :photos
  resources :accounts
end

resources :photos, :as => 'images'
/photos => photoscontroller

/photos images_path
/photos/new new_image_path
/photos/:id/edit edit_image_path


resources :photos, :path_names => { :name => 'make', :edit => 'change' }

/photos/make
/photos/1/change

scope :path_names => { :name => 'make' } do
  # rest of your routs
end

scope 'admin' do
  resources :photos, :as => 'admin_photos'
end
resources :photos

admin_photos_path, new_admin_photo_path

scope 'admin', :as => 'admin' do
  resources :photos, :accounts
end
resources :photos, :accounts

/admin/photos => admin_photos_path,
/admin/accounts => admin_accounts_path

scope ':username' do
  resources :posts
end

/bob/posts/1 => params[:username]=bob

resources :photos, :only => [:index, :show]

resources :photos, :except => :destroy

scope(:path_names => { :new => 'neu', :edit => 'bearbeiten' }) do
  resources :categories, :path => 'kategorien'
end

/kategorien categories_path
/kategorien/neu new_category_path
/kategorien/:id/bearbeiten edit_category_path(:id)


ActiveSupport::Inflector.inflections do |inflect|
  inflect.irregular 'tooth', 'teeth'
end

resources :magazine do
  resources :ads, :as => 'periodical_ads'
end

magazine_periodical_ads_url
edit_magazine_periodical_ad_path


rake routes  #列出所有的route信息


testing routes

assert_generates '/photos/1', { :controller => 'photos', :action => 'show', :id => '1' }
assert_generates '/about', :controller => 'pages', :action => 'about'

assert_recognizes({ :controller => 'photos', :action => 'show', :id => '1' }, '/photos/1')

assert_recognizes({ :controller => 'photos', :action => 'create' }, { :path => 'photos', :method => :post })

assert_routing({ :path => 'photos', :method => :post}, { :controller => 'photos', :action => 'create' })




本文转自 virusswb 51CTO博客,原文链接:http://blog.51cto.com/virusswb/1045211,如需转载请自行联系原作者

目录
相关文章
|
负载均衡 NoSQL JavaScript
hydra-microservice 中文手册(上篇)
hydra-microservice 中文手册(上篇)
163 0
|
存储 NoSQL 安全
hydra-microservice 中文手册(下篇)(二)
hydra-microservice 中文手册(下篇)(二)
115 0
|
消息中间件 存储 NoSQL
hydra-microservice 中文手册(下篇)(一)
hydra-microservice 中文手册(下篇)(一)
170 0
|
存储 负载均衡 前端开发
hydra-microservice 中文手册(中篇)
hydra-microservice 中文手册(中篇)
213 0
|
消息中间件 存储 NoSQL
hydra-microservice 中文手册(完整篇)(一)
hydra-microservice 中文手册(完整篇)(一)
293 0
|
存储 JSON NoSQL
hydra-microservice 中文手册(完整篇)(二)
hydra-microservice 中文手册(完整篇)(二)
203 0
|
测试技术 数据库 数据安全/隐私保护