рдХрдВрдЯреНрд░реЛрд▓рд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░: рд╣рд░ рджрд┐рди рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдЯрд┐рдкреНрд╕

рд╣рд░ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ "рдкрддрд▓рд╛" рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдмрдврд╝рддреА рд╣реИ, рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рд╕рд╛рдл рд░рдЦрдирд╛ рдХрдард┐рди рдФрд░ рдХрдард┐рди рд╣реЛрддрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд╣рдо рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рд╕реЗ рд╕рдордЭреМрддрд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдЕрдкрдиреЗ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╕рд╛рдл рд░рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

1. рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗ рд╣реБрдП рд╕реНрд░реЛрддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


рд╣рдо рд╕рднреА рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рджрд┐рдП рдЧрдП рд╕реНрд░реЛрддреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп CRUD рдХреЛрдб рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред InheritedResources :: Base рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдирд┐рдпрдВрддреНрд░рдХ рдХреА рдШреЛрд╖рдгрд╛ рдХреА рдХреЗрд╡рд▓ рджреЛ рдкрдВрдХреНрддрд┐рдпрд╛рдБ, рдФрд░ рдпрд╣ рд╕рдВрд╕рд╛рдзрди рдХреЗ рд╕рд╛рде рд╕рднреА рдореВрд▓ рд╕рдВрдЪрд╛рд▓рди (рдкреНрд░рджрд░реНрд╢рди / рдЕрджреНрдпрддрди / рд╣рдЯрд╛рдПрдВ) рдХрд░ рд╕рдХрддрд╛ рд╣реИ! рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдХреНрд╕рд░ рд╕рдорд╕реНрдпрд╛рдПрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВ:

рдкрд╣рд▓реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЙрдкрдпреБрдХреНрдд рдирд┐рдпрдВрддреНрд░рдХ рд╡рд┐рдзрд┐ (рдЗрдВрдбреЗрдХреНрд╕) рдХреЛ рдУрд╡рд░рд▓реИрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЪрдпрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдмрджрд▓рд╛рд╡ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рдХрд┐ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдХреБрдЫ рд▓реЛрдЧ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

2. has_scope рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


рдпрд╣ рд░рддреНрди рдЖрдкрдХреЛ рдореЙрдбрд▓ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рд╕реА рднреА рд╕реНрдХреЛрдк рдХреЛ рд╕рдВрд╕рд╛рдзрди рдЪрдпрди / рд╕рдВрд╕рд╛рдзрди рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╕рднреА рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдлрд╝рд┐рд▓реНрдЯрд░ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ:

class PostsController < InheritedResources::Base
has_scope :by_blog, :only => :index
end

class Post < ActiveRecord::Base
belongs_to :blog
scope :by_blog, lambda{|blog_id| where (:blog_id => blog_id)}
end

* This source code was highlighted with Source Code Highlighter .

рдЕрдм рдЕрдиреБрд░реЛрдз / рдкреЛрд╕реНрдЯ рдХреЗ рд╕рд╛рде? By_blog = 1, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрдИрдбреА = 1 рдХреЗ рд╕рд╛рде рдмреНрд▓реЙрдЧ рджреНрд╡рд╛рд░рд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рд╕реБрдВрджрд░ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рд░реНрдЧреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВрдЧреЗ:

get "blogs/:blog_id(/page/:page)(.:format)" => "posts#index" , :constraints => { :page => /\d+/ }, :defaults => { :page => 1 }
resources :posts


* This source code was highlighted with Source Code Highlighter .

рдФрд░ рд╡рд╣реА рдкрд░рд┐рдгрд╛рдо URL / рдмреНрд▓реЙрдЧ / 1 рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдкрдХреЛ рд▓рдЧрд╛рддрд╛рд░ рд╕рдВрдЧреНрд░рд╣ рд╕реЙрд░реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдлрд┐рд░ рдЧреБрдВрдЬрд╛рдЗрд╢ рд╣рдореЗрд╢рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рдХреА рдЬрд╛рдПрдЧреА:

class PostsController < InheritedResources::Base
has_scope :ordered, : default => 'created_at DESC'
end

class Post < ActiveRecord::Base
scope :ordered, lambda{|field| order(field)} #
end


* This source code was highlighted with Source Code Highlighter .

рдЗрд╕реА рддрд░рд╣, рдЖрдк N + 1 рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

class PostsController < InheritedResources::Base
has_scope :eager_loading, : default => 'true' , :only => :index
end

class Post < ActiveRecord::Base
scope :eager_loading, preload(:blog, :user, :tags)
scope :eager_loading2, includes(:blog, :user)
end


* This source code was highlighted with Source Code Highlighter .
рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рд╕рд╛рде рдХрдИ рд╕реНрдХреЛрдкреНрд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рд╢рд░реНрддреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ, рдпрд╛ рдмрд╕ рдореЙрдбрд▓ рдореЗрдВ рд╕реНрдХреЛрдк рдХрд╛ рдЙрддреНрдкрд╛рджрди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЖрдк рдмреНрд▓реЙрдХ рдореЗрдВ has_scope рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп рдЙрдиреНрд╣реЗрдВ рд╕реАрдзреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

class PostsController > InheritedResources::Base
has_scope :blog do |controller, scope, value |
value != "all" ? scope. where (:blog_id => value ) : scope
end
end


* This source code was highlighted with Source Code Highlighter .

рдЖрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреГрд╖реНрда рдкрд░ has_scope рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВред рдПрдЪрдПрдПрдордПрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХрд╛ рдкреНрд░рднрд╛рд╡ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣реЛрдиреЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рдордп рдмрд┐рддрд╛рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдпрд╣ рдмрд╣реБрдд рд╕рдордп рдмрдЪрд╛рддрд╛ рд╣реИред

3. рдкреЗрдЬрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП kaminari / will_paginate рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


рдпреЗ рд░рддреНрди рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдЖрд▓рд╕реА рдиреЗ рдЗрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рд╡реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдПрдХреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ? рдХреЗрдорд░реА рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ - рдпрд╣ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рджрд╛рдпрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдкреГрд╖реНрда, рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рддрд░рд╣ред рд▓реЗрдХрд┐рди will_paginate рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ рдереЛрдбрд╝рд╛ рд╕рд╛ рдЯрд┐рдВрдХрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкреЗрдЬреЗрдЯ рд╡рд┐рдзрд┐ рдЬреЛ рдЗрд╕реЗ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ рд╡рд╣ рдореЙрдбрд▓ рдХреНрд╖реЗрддреНрд░ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реБрдВрджрд░ рд╕рдорд╛рдзрд╛рди рд╣реИ - рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣ рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:

class PostsController < InheritedResources::Base
protected
def collection
@posts ||= end_of_association_chain.paginate(:page => params [:page])
end
end


* This source code was highlighted with Source Code Highlighter .

рдЪреВрдВрдХрд┐ рдпрд╣ рдЪрд╛рд▓ рдмрд╣реБрдд рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдПрдЧреА, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдореЙрдбреНрдпреВрд▓ рдкрд░ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЕрдиреНрдп рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд▓реА рдмрд╛рд░ рдЙрд╕ рдкрд░ рдЕрдзрд┐рдХред

4. рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП , рдХреНрд░рдорд╢рдГ рдбреЗрд╡рд┐рд╕ рдФрд░ рдХреИрдирдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


рдЗрд╕ рдмрдВрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдк рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдмрд┐рдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡реЗ рдЖрдкрдХреЛ рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рддрд░реНрдХ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдФрд░ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред

5. рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ, рддреЛ рдорд╛рдирдХ рдирд┐рдпрдВрддреНрд░рдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд▓реИрдк рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВред


рд╕рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдВрдЪ, рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг, рдФрд░ рдорд╛рдирдХ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ_рдлрд┐рд▓реНрдЯрд░:

class PostsController < InheritedResources::Base
before_filter lambda{ resource.user = current_user }, :only => :create
before_filter lambda { resource.thumb = nil if params [:thumb_delete] }, :only => :update
end


* This source code was highlighted with Source Code Highlighter .


6. RSS рдлрд╝реАрдбреНрд╕ рдмрдирд╛рдиреЗ, AJAX рд╕рдВрдЧреНрд░рд╣ рд▓реЛрдб рдХрд░рдиреЗ рдЖрджрд┐ рдХреЗ рд▓рд┐рдПред рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ


рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ: /posts.rss рдФрд░ /posts.json, рдЬрдмрдХрд┐ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдпрд╣ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:
class PostsController < InheritedResources::Base
respond_to :html
respond_to :rss, :json, :only => :index
end


* This source code was highlighted with Source Code Highlighter .

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, RSS рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рдкреЛрд╕реНрдЯ / index.rss.рдмрд┐рд▓реНрдбрд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
xml.instruct! :xml, :version => "1.0"
xml.rss :version => "2.0" do
xml.channel do
xml.title ""
xml.description ""
xml.link collection_url(:format => :rss)

for resource in collection
xml.item do
xml.title resource.title
xml.description "#{resource.annotation}\n#{link_to ' ...', resource_url(resource)}"
xml.pubDate resource.published_at.to_s(:rfc822)
xml.link resource_url(resource)
xml.guid resource_url(resource)
end
end
end
end


* This source code was highlighted with Source Code Highlighter .


рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд jQuery рдХреЛрдб рдХреЗ рд╕рд╛рде JSON рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
$( '#blog_id' ).live( 'change' , function () {
$.ajax({
url: '/posts.json' ,
dataType: 'json' ,
data: { blog_id: $( this ).val() },
success: function (json) {
var options = '' ;
for ( var i = 0; i < json.length; i++) {
options += '<option value="' + json[i].id + '">' + json[i].title + '</option>' ;
}
$( '#destination' ).html(options);
}
});
});


* This source code was highlighted with Source Code Highlighter .

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд▓рдЪреАрд▓реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛, рдПрдХ REST рджреГрд╖реНрдЯрд┐рдХреЛрдг рдФрд░ рдХреЛрдб рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдореЗрдВ рдиреНрдпреВрдирддрдо рдорд╛рддреНрд░рд╛ рдореЗрдВ рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдЗрди рд╕рднреА рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЦреБрдж рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рджрд┐рдЦрд╛рдпрд╛ рд╣реИред рдХреБрдЫ рдЖрдБрдХрдбрд╝реЗ: рд╡рд┐рдХрд╛рд╕ рдХреЗ 10 рдорд╣реАрдиреЛрдВ рдХреЗ рдмрд╛рдж, SmartSourcing рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдирд┐рдпрдВрддреНрд░рдХ 86 рд▓рд╛рдЗрдиреЗрдВ рд▓реЗрддрд╛ рд╣реИ, рд╕рдмрд╕реЗ рдЫреЛрдЯреА - 2 рд▓рд╛рдЗрдиреЗрдВ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХрд╛рдВрд╢ рдирд┐рдпрдВрддреНрд░рдХ 20 LOC рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред

Source: https://habr.com/ru/post/In123200/


All Articles