рдореВрд╕рдЯреНрд░реИрдк - рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ-рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬреЛ рдЖрдкрдХреЛ рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рд╣реЙрдЯрдХреАрдЬрд╝ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдЗрддрдиреА рджреЗрд░ рдкрд╣рд▓реЗ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреАред рд▓реЗрдХрд┐рди рдореИрдВ рдкрд╣рд▓реЗ рд╣реА рдореБрдЭрд╕реЗ рдЗрддрдирд╛ рдкреНрдпрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд╣реЛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рд░реВрдмреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рд░реВрдмреА рдХреЛ рд╕рд░рд▓ рдФрд░ рд╕реБрдЦрдж рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЕрд░реНрдерд╛рддреН, рд░реЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд░реВрдмреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд▓рдкреЗрдЯреЛред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдорд╛рдЙрд╕реН
рдореЗрдЯрд░рдЯреНрд░реИрдк-рд░реЗрд▓ рдХреЗ
рдмрд╛рд░реЗ рдореЗрдВ рдЖрдпрд╛ред
рд╕рдВрдмрдВрдз
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ
Gemfile
рдореЗрдВ рд▓рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВ
gem 'mousetrap-rails'
рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ
$ bundle install
рдлрд┐рд░ рдЬрдирд░реЗрдЯрд░ рдЪрд▓рд╛рдПрдВ, рдЬреЛ рдХрд┐рдлрд╛рдЗрдВрдбрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ
keybindings.js.coffee
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдПрд╕реЗрдЯ рдкрд╛рдЗрдк рд▓рд╛рдЗрди рд╕реЗ рдЬреЛрдбрд╝рдХрд░
//= require mousetrap
рдЯреВ рдЬреЗрдПрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдирд┐рдлрд╝реЗрд╕реНрдЯ рдХреА
//= require mousetrap
ред
$ rails generate mousetrap:install
рдХреЗ рдЙрдкрдпреЛрдЧ
рдкрд╣рд▓реЗ рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рдкреГрд╖реНрда рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЙрдХреНрд╕ рд╕реЗ рдбреЗрдЯрд╛-рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ (
data-keybinding
) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рджреГрд╢реНрдп рдХреЛрдб
= link_to 'Homepage', root_path, data: { keybinding: 'h' }
рдЖрдкрдХреЛ
'h'
рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рд╣реЛрдо рдкреЗрдЬ рдкрд░ рдЬрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛
рдФрд░ рдпрд╣ рдЖрдкрдХреЛ
'u'
рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
Username
рдЗрдирдкреБрдЯ рдХреНрд╖реЗрддреНрд░ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдЧрд╛
= text_field_tag 'Username', nil, data: { keybinding: 'u' }
рдмреЗрд╢рдХ, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдХреНрд╖рдорддрд╛рдПрдВ рдХреЗрд╡рд▓ рдиреЗрд╡рд┐рдЧреЗрд╢рди рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдЖрдк рдХрд┐рд╕реА рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рди рдХреЗрд╡рд▓ рдПрдХ рдмрдЯрди рдкрд░, рдмрд▓реНрдХрд┐ рдкреВрд░реЗ рдХреАрдмреЛрд░реНрдб рдХреЙрдореНрдмреЛ рдкрд░ рдЙрд╕рдХреА рдХреЙрд▓ рдХреЛ рд▓рдЯрдХрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреЗрдЬ рдкрд░ Mousetrap рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдиреЗрдВред
рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ
рдореВрд╕рдЯреНрд░реИрдк рдЕрдкрдирд╛ рдХрд╛рдо рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореИрдВ рдордгрд┐ рдХреЛ рдФрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рдХрд┐рд╕реА рднреА
рд░рдЪрдирд╛рддреНрдордХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрд░ рдЦреБрд╢реА рд╣реЛрдЧреАред
рд▓рд┐рдВрдХ (рдЬрд╣рд╛рдВ рдЙрдирдХреЗ рдмрд┐рдирд╛)
┬й рдлреЛрдЯреЛ
macrj рджреНрд╡рд╛рд░рд╛