របៀបបង្កើតទម្រង់បែបបទ (form) ជាមួយ Rails
នៅក្នុងអត្ថបទមុន Techfree បានរៀបរាប់អំពី របៀបដំឡើង RubyOnRails។ ចំណែកថ្ងៃនេះយើងនឹងបង្ហាញអត្ថបទមួយទាក់ទងទៅនឹង របៀបបង្កើតទម្រង់បែបបទ (form) ជាមួយ Rails។
ដើម្បីអោយ Rails បង្ហាញថា “Hello”, អ្នកចាំបាច់ត្រូវបង្កើត controller និង view យ៉ាងហោចណាស់មួយ។ គោលបំណងរបស់ controller គឺដើម្បីទទួលសំណើជាក់លាក់សម្រាប់កម្មវិធី។ Routing ជាអ្នកសម្រេចថា controller មួយណាបានទទួលនូវសំណើរមួយណា។ គោលបំណងរបស់ view គឺដើម្បីបង្ហាញព័ត៌មានក្នុងទ្រង់ទ្រាយដែលមនុស្សអាចអាន។ ភាពខុសគ្នាសំខាន់ដើម្បីបង្កើតគឺវាជា controller មិនមែនជា view ជាកន្លែងដែលបានប្រមូលព័ត៌មាន។
ដើម្បីបង្កើត controller ថ្មីមួយអ្នកនឹងចាំបាច់ត្រូវដំណើរការប្រតិបត្តិការ “controller” ហើយប្រាប់វាថាអ្នកចង់អោយវាហៅ controller “Welcome” ជាមួយនឹងការហៅសកម្មភាព “index” ដូចខាងក្រោម៖
bin/rails generate controller Welcome index
Rails នឹងបង្កើតឯកសារមួយចំនួននិង route មួយសម្រាប់អ្នក៖
create app/controllers/welcome_controller.rb route get 'welcome/index' invoke erb create app/views/welcome create app/views/welcome/index.html.erb invoke test_unit create test/controllers/welcome_controller_test.rb invoke helper create app/helpers/welcome_helper.rb invoke assets invoke coffee create app/assets/javascripts/welcome.coffee invoke scss create app/assets/stylesheets/welcome.scss
ឯកសារសំខាន់ៗនៃ controller ទាំងនេះគឺស្ថិតនៅ app/controllers/welcome_controller.rb ហើយ view ស្ថិតនៅ app/views/welcome/index.html.erb។ សូមចូលទៅថតឯកសាររបស់អ្នកដើម្បីមើល៖
បើកឯកសារ app/views/welcome/index.html.erb ជាមួយកម្មវិធីនិពន្ធអត្ថបទណាមួយរបស់អ្នក។ លុបកូដទាំងអស់ដែលមានស្រាប់នៅក្នុងឯកសារនេះហើយជំនួសវាដោយកូដមួយបន្ទាត់ដូចខាងក្រោម៖
ដំណើរការកម្មវិធី Rails ហើយបើកកម្មវិធីមើលវេបសាយរបស់អ្នក នោះនឹងបង្ហាញ៖
បន្ទាប់មកទៀតអ្នកត្រូវតែប្រាប់ Rails ថាទំព័រដើមរបស់អ្នកមានទីតាំងស្ថិតនៅត្រង់ណា។ បើកឯកសារ config/routes.rb ជាមួយកម្មវិធីនិពន្ធអត្ថបទរបស់អ្នក ហើយសរសេរកូដ៖
នៅត្រង់បន្ទាត់ទី ៤ គឺកន្លែងដែលអ្នកប្រាប់ពីទីតាំងទំព័រដើមរបស់អ្នក។
បន្ទាប់មកអ្នកត្រូវបង្កើត resource ថ្មីមួយ។ Resource គឺជាពាក្យដែលបានប្រើសម្រាប់ការប្រមូលផ្ដុំនៃវត្ថុស្រដៀងគ្នាដូចជាអត្ថបទ មនុស្ស ឬសត្វជាដើម។ អ្នកចាំបាច់ត្រូវបន្ថែម article resource ទៅឯកសារ config/routes.rb ដូចខាងក្រោម៖
ប្រសិនបើអ្នកដំណើរការពាក្យបញ្ជា bin/rails routes អ្នកនឹងឃើញថាវាត្រូវបានបានកំណត់ routes សម្រាប់សកម្មភាពស្ដង់ដារដែលនៅសល់ទាំងអស់
$ bin/rails routes Prefix Verb URI Pattern Controller#Action articles GET /articles(.:format) articles#index POST /articles(.:format) articles#create new_article GET /articles/new(.:format) articles#new edit_article GET /articles/:id/edit(.:format) articles#edit article GET /articles/:id(.:format) articles#show PATCH /articles/:id(.:format) articles#update PUT /articles/:id(.:format) articles#update DELETE /articles/:id(.:format) articles#destroy root GET / welcome#index
ជាមួយនឹង route ដែលបានកំណត់រួចទៅហើយ, សំណើឥឡូវនេះអាចត្រូវបានធ្វើឡើងទៅជា /articles/new នៅក្នុងកម្មវិធី។ ចូលទៅអសដ្ឋាន http://localhost:3000/articles/new ហើយអ្នកនឹងឃើញ routing error៖
កំហុសនេះកើតឡើងដោយសារតែ route ចាំបាច់ត្រូវមាន controller ដែលបានកំណត់នៅក្នុងគោលបំណងដើម្បីការស្នើរសុំនេះ។ ដំណោះស្រាយទៅនឹងបញ្ហានេះគឺសាមញ្ញ៖ បង្កើត controller ដែលមានឈ្មោះថា ArticlesController។ អ្នកអាចវាយពាក្យបញ្ជាដូចខាងក្រោម៖
bin/rails generate controller Articles
ប្រសិនបើអ្នកទៅមើលអ្វីដែលទើបបានបង្កើតឡើង app/controllers/articles_controller.rb អ្នកនឹងឃើញ controller មួយដែលទទេរ៖
Controller មួយគឺគ្រាន់តែជា class ដែលត្រូវបានកំណត់ដើម្បី inherit ពី ApplicationController មួយ។ វានៅក្នុង class ដែលអ្នកនឹងកំណត់វិធីសាស្រ្តដែលនឹងក្លាយទៅជា actions សម្រាប់ controller នេះ។ ប្រសិនបើអ្នកដំណើរការ http://localhost:3000/articles/new អ្នកនឹងឃើញកំហុសថ្មី៖
កំហុសនេះបង្ហាញថា Rails មិនអាចរកឃើញ action ថ្មីនៅខាងក្នុង ArticlesController ដែលអ្នកទើបតែបង្កើត។ នេះគឺដោយសារតែនៅពេលដែល controllers ត្រូវបានបង្កើតក្នុង Rails ដែលពួកគេគឺទទេតាមលំនាំដើមលុះត្រាតែអ្នកប្រាប់ actions ដែលចង់បានអំឡុងពេលដំណើរការជំនាន់នេះ។ ដើម្បីកំណត់ action នៅខាងក្នុង controller, អ្វីដែលអ្នកត្រូវធ្វើគឺកំណត់វិធីសាស្រ្តមួយនៅក្នុង controller នេះ។ បើកឯកសារ app/controllers/articles_controller.rb ហើយនៅក្នុង class ArticlesController កំណត់វិធីសាស្រ្តថ្មីនេះដូច្នេះ controller របស់អ្នកឥឡូវនេះមើលទៅដូចនេះ៖
ជាមួយនឹងវិធីសាស្រ្តថ្មីដែលបានកំណត់នៅក្នុង ArticlesController ប្រសិនបើអ្នកដំណើរការ http://localhost:3000/articles/new នោះនឹងឃើញកំហុសមួយផ្សេងទៀត៖
ហេតុនេះហើយបានជាឯកសារគួរត្រូវបានគេហៅគឺ articles/new.html.erb ហើយត្រូវស្ថិតនៅក្នុងថតនៃ app/views នៅក្នុងកម្មវិធី។ បន្ទាប់មកបង្កើតឯកសារថ្មី app/views/articles/new.html.erb ហើយសរសេរដូចនេះ៖
ពេលអ្នកដំណើរការ http://localhost:3000/articles/new នឹងបង្ហាញដូចខាងក្រោម៖
ដើម្បីបង្កើតទម្រង់បែបបទនៅក្នុងទំព័រគំរូនេះអ្នកនឹងប្រើ form builder មួយ។ ការបង្កើតទម្រង់បែបបទចម្បងសម្រាប់ Rails គឺត្រូវបានផ្តល់ដោយវិធីសាស្រ្តជំនួយដែលគេហៅថា form_for។ ដើម្បីប្រើវិធីសាស្រ្តនេះ បន្ថែមកូដនេះចូលទៅក្នុង app/views/articles/new.html.erb
នោះយើងនឹងបានទម្រង់បែបបទដូចខាងក្រោម៖