рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛
рдпрджрд┐ рдЖрдк REL> = 3.1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рддрд╣рдд рд╕рднреА рд▓рд┐рдкрд┐рдпрд╛рдБ (рдФрд░ рд╣рдо рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ) рдПрдХ рд╣реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдкреАрдбрд╝рд┐рдд рд╣реЛрддреА рд╣реИрдВ рдФрд░, рддрджрдиреБрд╕рд╛рд░, рд╕рднреА рдкреГрд╖реНрдареЛрдВ рдкрд░ рдЪрд▓рддреА рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдкреГрд╖реНрда рдкрд░ рдФрд░ рджреВрд╕рд░реЗ рдкрд░ рдЬрд╝рд░реВрд░рдд рди рд╣реЛ?
рджреЗрдЦреЛ! рдпрд╣ рдмрд┐рд▓рдХреБрд▓ рд╡реИрд╕рд╛
рд╣реА рд╣реИ рдЬреИрд╕рд╛
рдХрд┐ рдкреНтАНрд▓рдЧреНтАНрдЧреЗрдмрд▓_рдЬрд╕ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред
рдХреНрдпреЛрдВ рдЬрд╛рдо
рдЖрдЦрд┐рд░рдХрд╛рд░, рдЕрдиреНрдп рддрд░реАрдХреЗ рд╣реИрдВ (рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рдПрдХ рджреГрд╢реНрдп рдореЗрдВ рдХреЛрдб рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛ рд╣реИ)ред рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдЖрд╡рд╢реНрдпрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╣реИ:
<% content_for :head do %> <%= javascript_include_tag 'my_fancy_js' %>
рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛_рдЯреНрд░реА рд╕реЗ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрд╛рд╣рд░ рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдорд╛рдЗрдирд╕ рдпрд╣ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдирд╣реАрдВ рд╣реИрдВ (рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЦреЛрдЬрдирд╛ рдФрд░ рд╕рдордЭрдирд╛ рдХрдард┐рди рд╣реИ)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдХреЛрдб рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдмрдбрд╝рд╛ рд╣реИ, рддреЛ рд╣рдо рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рд▓рд╛рднреЛрдВ рдХреЛ рдЦреЛ рджреЗрддреЗ рд╣реИрдВред рдЬрд╛рдо рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рдорд╛рдзрд╛рди рд╡рд░реНрдгрд┐рдд рдиреБрдХрд╕рд╛рди рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдЖрдк рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЬрдирд░реЗрдЯрд░ рдЪрд▓рд╛рддреЗ рд╣реИрдВ:
rails generate pluggable_js Post index new
рдпрд╣ рджреЛ рдлрд╛рдЗрд▓реЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ DOM. рд▓реЛрдб рдХреЗ рдмрд╛рдж
Post.index()
рдФрд░
Post.new()
рдлрд╝рдВрдХреНрд╢рди рдХреЛ
Post.index()
рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
app/assets/javascripts/pluggable/posts/index.js.coffee app/assets/javascripts/pluggable/posts/new.js.coffee
рдЕрдм рдЖрдкрдХреЛ рдмрд╕ рдЙрдиреНрд╣реЗрдВ posts.js.coff рдореЗрдВ рд╡рд░реНрдгрди рдХрд░рдирд╛ рд╣реИ:
window.Post ||= {} Post.index = () ->
рдФрд░ рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╕рд╣рд╛рдпрдХ
<%= javascript_pluggable_tag %>
, рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдЧрд╛ рдпрджрд┐ рдпрд╣ рдкрде рдФрд░ рд╡рд░реНрддрдорд╛рди рдирд┐рдпрдВрддреНрд░рдХ / рдХрд╛рд░реНрд░рд╡рд╛рдИ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рд╣рд╛рдВ, рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдиреБрд░реЛрдз рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЯреНрд░рд┐рдЧрд░ рд╣реИред
* рдореИрдВрдиреЗ рдЙрди рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬреЛ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП
рд╡рд┐рд╕реНрддреГрдд рдирд┐рд░реНрджреЗрд╢ рджреЗрдЦреЗрдВ ред
config
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рдПрдХ рдПрдХреНрд╢рди рд╕рд░реНрдЪ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреЛ (рдПрдХреНрд╢рди рдЗрдВрдбреЗрдХреНрд╕ рдХреА рддрд░рд╣) рдЗрдВрдбреЗрдХреНрд╕ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐
Post.index()
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рднреА рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк config / initializers / pluggable_js.rb рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реЗрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
PluggableJs.config do |config| config.pair_actions = { 'search' => 'index' } end
{ 'create' => 'new', 'update' => 'edit' }
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкрдВрдЬреАрдХреГрдд
{ 'create' => 'new', 'update' => 'edit' }
ред
рдЕрдВрдд рдореЗрдВ
рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рд▓рд┐рдкрд┐рдпрд╛рдБ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд╣реИрдВред рд╕рднреА рдХрд╕реНрдЯрдо рдлрд╝рдВрдХреНрд╢рди рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рдЖрддреЗ рд╣реИрдВред рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╣рдордиреЗ js рдХреЗ рдХрд┐рд╕реА рднреА рдЙрд▓реНрд▓реЗрдЦ рд╕реЗ рджреГрд╢реНрдп рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдл рдХрд░ рджрд┐рдпрд╛ред
UPD: рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рджред
рдзреНрдпрд╛рди рджреЗрдВ , рдЬрд╛рдо рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛, рдЕрдм рдЖрдкрдХреЛ config.assets.precompile рдореЗрдВ рдХреБрдЫ рднреА рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдмрд╕ рдПрдХ рд╕рдорд╛рд░реЛрд╣ рдХреА рдШреЛрд╖рдгрд╛ред рдпрд╣ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рдмрд╛рдХреА рд╣реИред рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ
рд╕реНрдЯрд╛рдЗрд▓ рдЬреИрдо рдХреЛ рджреЗрдЦреЗрдВред
рдмрд╣реБрдд рдпреЛрдЧрджрд╛рди рджреЗрдиреЗ
рд╡рд╛рд▓реЗ ,
ExReanimator рдФрд░ рдЙрдирдХреЗ рдпреЛрдЧрджрд╛рди рдХреЗ рд▓рд┐рдП
рдЙрд▓реНрд▓реВ рдХрд╛ рдзрдиреНрдпрд╡рд╛рджред