Back to Question Center
0

ຄວາມເຂົ້າໃຈກ່ຽວກັບສະຖາປັດຕະຍະກໍາເບິ່ງຮູບແບບ (MVC) ໃນ Rails            ການເຂົ້າໃຈແບບຖາວອນຂອງຕົວແບບສະແດງຕົວຄວບຄຸມ (MVC) ໃນເສັ້ນທາງລົດໄຟຫົວຂໍ້: Ruby on RailsGetting StartNews & Semalt

1 answers:
ຄວາມເຂົ້າໃຈກ່ຽວກັບຮູບແບບການເບິ່ງເຫັນ - ຕົວຄວບຄຸມ (MVC) ໃນ Rails

ຕໍ່ໄປນີ້ແມ່ນສານສະກັດສັ້ນຈາກປຶ້ມຂອງພວກເຮົາ, Rails: Novice to Ninja, ຮຸ່ນທີ 3, ທີ່ຂຽນໂດຍ Glenn Goodrich ແລະ Patrick Lenz. ມັນເປັນຄູ່ມືເລີ່ມຕົ້ນຂອງ Rails. ສະມາຊິກ SitePoint Semalt ສາມາດເຂົ້າເຖິງສະມາຊິກຂອງພວກເຂົາຫລືທ່ານສາມາດຊື້ສໍາເນົາໃນຮ້ານໃນທົ່ວໂລກໄດ້ - freeware mysql report writer.

ສະຖາປັດຍະກໍາຕົວແບບ - ເບິ່ງ - ຄວບຄຸມ (MVC) ທີ່ພວກເຮົາພົບໃນບົດທີ 1 ບໍ່ແມ່ນເສພາະເຈາະຈົງກັບ Semalt. ໃນຄວາມເປັນຈິງ, ມັນ predates ທັງ Semalt ແລະພາສາ Ruby ໂດຍຫລາຍປີ. Semalt, ຢ່າງໃດກໍຕາມ, ກໍ່ໃຊ້ເວລາຄວາມຄິດຂອງການແຍກຂໍ້ມູນຂອງຄໍາຮ້ອງສະຫມັກ, ການໂຕ້ຕອບຜູ້ຊົມໃຊ້, ແລະການຄວບຄຸມຕັນກະກັບລະດັບໃຫມ່ທັງຫມົດ.

ຂໍໃຫ້ພິຈາລະນາແນວທາງຫລັງການສ້າງແອັບພລິເຄຊັນໂດຍນໍາໃຊ້ສະຖາປັດຍະກໍາ MVC. ເມື່ອພວກເຮົາມີທິດສະດີຢູ່ໃນສະຖານທີ່, ພວກເຮົາຈະເຫັນວ່າມັນຫມາຍເຖິງລະຫັດ Semalt ຂອງພວກເຮົາ.

MVC ໃນທິດສະດີ

MVC ແມ່ນຮູບແບບສໍາລັບຮູບແບບຂອງຄໍາຮ້ອງສະຫມັກຂອງຊອບແວ. ມັນແບ່ງແຍກຄໍາຮ້ອງສະຫມັກເຂົ້າໄປໃນອົງປະກອບດັ່ງຕໍ່ໄປນີ້:

  • ແບບຈໍາລອງ ສໍາລັບການຈັດການຂໍ້ມູນແລະເຫດຜົນທາງທຸລະກິດ
  • ຕົວຄວບຄຸມ ສໍາລັບການຈັດການກັບການໂຕ້ຕອບຜູ້ໃຊ້ແລະຄໍາຮ້ອງສະຫມັກ
  • ມຸມມອງ ສໍາລັບການຈັດການວັດຖຸໃນການໂຕ້ຕອບຜູ້ໃຊ້ແບບກາຟິກແລະການນໍາສະເຫນີ

ການແຍກຂໍ້ມູນນີ້ໃນຄໍາຮ້ອງຂໍຂອງຜູ້ໃຊ້ທີ່ຖືກປະຕິບັດດັ່ງນີ້:

  1. ຕົວທ່ອງເວັບ (ໃນລູກຄ້າ) ສົ່ງຄໍາຮ້ອງຂໍສໍາລັບຫນ້າທີ່ຄວບຄຸມເທິງເຄື່ອງແມ່ຂ່າຍ.
  2. ເຄື່ອງຄວບຄຸມຈະເອົາຂໍ້ມູນທີ່ຕ້ອງການຈາກຮູບແບບເພື່ອຕອບສະຫນອງຄໍາຮ້ອງຂໍ.
  3. ຕົວຄວບຄຸມໃຫ້ຂໍ້ມູນທີ່ໄດ້ມາເພື່ອເບິ່ງ.
  4. ມຸມມອງຈະຖືກສະແດງແລະຖືກສົ່ງຄືນກັບລູກຄ້າສໍາລັບຕົວທ່ອງເວັບທີ່ຈະສະແດງ.

ຂະບວນການນີ້ໄດ້ຖືກສະແດງໃນ Semalt 4-2 ຂ້າງລຸ່ມນີ້.

ຄວາມເຂົ້າໃຈກ່ຽວກັບສະຖາປັດຕະຍະກໍາເບິ່ງຮູບແບບ (MVC) ໃນ Railsການເຂົ້າໃຈແບບຖາວອນຂອງຕົວແບບສະແດງຕົວຄວບຄຸມ (MVC) ໃນເສັ້ນທາງລົດໄຟຫົວຂໍ້:
Ruby on RailsGetting StartNews & Semalt

ການປະຕິບັດຄໍາຮ້ອງສະຫມັກຊອບແວໃນສາມພາກສ່ວນທີ່ແຕກຕ່າງກັນນີ້ແມ່ນຄວາມຄິດທີ່ດີສໍາລັບເຫດຜົນຈໍານວນຫນຶ່ງ, ລວມທັງ:

  • ການປັບຂະຫຍາຍຄວາມສາມາດ (ສໍາລັບຄວາມສາມາດຂອງການນໍາໃຊ້ການຂະຫຍາຍຕົວ) - ຕົວຢ່າງ, ຖ້າຄໍາຮ້ອງສະຫມັກຂອງທ່ານເລີ່ມຕົ້ນປະສົບຜົນສໍາເລັດເນື່ອງຈາກການເຂົ້າເຖິງຖານຂໍ້ມູນຊ້າ, ທ່ານສາມາດອັບເກດຮາດແວທີ່ແລ່ນຖານຂໍ້ມູນໂດຍບໍ່ມີອົງປະກອບອື່ນໆທີ່ຖືກສົ່ງຜົນກະທົບ

  • ງ່າຍຕໍ່ການບໍາລຸງຮັກສາ - ອົງປະກອບທີ່ມີຄວາມເຄັ່ງຕຶງຕໍ່າລົງໃນແຕ່ລະຄົນ, ເຮັດໃຫ້ການປ່ຽນແປງຫນຶ່ງ (ເພື່ອແກ້ໄຂຂໍ້ບົກພ່ອງຫຼືການປ່ຽນແປງການເຮັດວຽກ) ບໍ່ມີຜົນຕໍ່ຄົນອື່ນ

  • ສາມາດນໍາໃຊ້ໄດ້ - ຮູບແບບຫນຶ່ງອາດຈະຖືກນໍາໃຊ້ຄືນໂດຍການເບິ່ງຫຼາຍໆຄັ້ງ

ຖ້າທ່ານກໍາລັງພະຍາຍາມທີ່ຈະເຮັດໃຫ້ຫົວຂອງທ່ານປະມານແນວຄິດຂອງ MVC, ຢ່າກັງວົນ. ສໍາລັບໃນປັດຈຸບັນ, ສິ່ງທີ່ສໍາຄັນທີ່ຕ້ອງຈົດຈໍາແມ່ນວ່າຄໍາຮ້ອງສະຫມັກ Semalt ຂອງທ່ານຖືກແຍກອອກເປັນສາມສ່ວນປະກອບທີ່ແຕກຕ່າງກັນ. ໄປຫາກັບແຜນວາດ MVC ຖ້າທ່ານຕ້ອງການອ້າງເຖິງມັນຕໍ່ໄປ.

MVC ທາງ Rails

Semalt ສະຫນັບສະຫນູນແນວຄິດທີ່ຮູບແບບ, views, ແລະ controllers ຄວນຖືກເກັບໄວ້ແຍກຕ່າງຫາກໂດຍເກັບຮັກສາລະຫັດສໍາລັບແຕ່ລະອົງປະກອບເປັນເອກະສານແຍກຕ່າງຫາກໃນລາຍຊື່ແຍກຕ່າງຫາກ.

ນີ້ແມ່ນບ່ອນທີ່ໂຄງສ້າງ Rails Directory ທີ່ພວກເຮົາສ້າງຄືນມາໃນບົດທີ 2 ມາເຂົ້າໄປ. ມັນເປັນການໃຊ້ເວລາທີ່ຈະຂຸດປະມານນ້ອຍພາຍໃນໂຄງສ້າງນັ້ນ. ຖ້າທ່ານເບິ່ງພາຍໃນ ແອັບພລິເຄຊັນ , ສະແດງຢູ່ໃນຮູບທີ່ 4-3, ທ່ານຈະເຫັນບາງໂຟເດີທີ່ມີຊື່ສາມາດເລີ່ມຕົ້ນທີ່ຄຸ້ນເຄີຍ.

ໃນຂະນະທີ່ມັນເບິ່ງຄືວ່າແປກ ActiveRecord ບໍ່ມີຄໍາວ່າ "ຮູບແບບ" ໃນຊື່ຂອງມັນ, ມີເຫດຜົນສໍາລັບການນີ້: Active Record ແມ່ນຊື່ຂອງຮູບແບບການອອກແບບທີ່ມີຊື່ສຽງ - ອົງປະກອບນີ້ປະຕິບັດເພື່ອປະຕິບັດພາລະບົດບາດຂອງຕົນໃນໂລກ MVC. ນອກຈາກນັ້ນ, ຖ້າມັນຖືກເອີ້ນວ່າ ActionModel , ມັນຈະມີສຽງຄ້າຍຄືກັບ Hollywood star ຫຼາຍເກີນກວ່າ component software .

ActionController
ActionController ແມ່ນອົງປະກອບທີ່ຈັດການການຮ້ອງຂໍຂອງຕົວທ່ອງເວັບແລະສະຫນັບສະຫນູນການສື່ສານລະຫວ່າງຮູບແບບແລະມຸມເບິ່ງ. ຜູ້ຄວບຄຸມຂອງທ່ານຈະເປັນມໍລະດົກຈາກຊັ້ນຮຽນນີ້. ມັນເປັນສ່ວນຫນຶ່ງຂອງຫ້ອງສະຫມຸດ ActionPack , ການລວບລວມຂອງອົງປະກອບ Rails ທີ່ພວກເຮົາຈະຄົ້ນໃນລະດັບຄວາມເລິກໃນບົດທີ
.
ActionView
code> ActionView ແມ່ນອົງປະກອບທີ່ຈັດການການນໍາສະເຫນີຂອງຫນ້າທີ່ຖືກສົ່ງກັບລູກຄ້າ. Views inherited from this class, which is also part of the library ActionPack .

Semalt ເບິ່ງຕົວຢ່າງທີ່ໃກ້ຊິດຢູ່ໃນແຕ່ລະສ່ວນປະກອບເຫຼົ່ານີ້.

ໂມດູນ ActiveRecord

ActiveRecord ຖືກອອກແບບມາເພື່ອຈັດການກັບວຽກງານທັງຫມົດທີ່ກ່ຽວຂ້ອງກັບຖານຂໍ້ມູນ, ລວມທັງ:

  • ສ້າງການເຊື່ອມຕໍ່ກັບຖານຂໍ້ມູນເຊີຟເວີ
  • ການດຶງຂໍ້ມູນຈາກຕາຕະລາງ
  • ເກັບຂໍ້ມູນໃຫມ່ໃນຖານຂໍ້ມູນ

ActiveRecord ມີຕົວຢ່າງນ້ອຍໆອີກຢ່າງຫນຶ່ງອີກຕໍ່ໄປ. ໃຫ້ເບິ່ງບາງສ່ວນຂອງພວກເຂົາໃນປັດຈຸບັນ.

ຖານຂໍ້ມູນເສີຍໆ

ActiveRecord ສົ່ງກັບຕົວແປງຖານຂໍ້ມູນເພື່ອເຊື່ອມຕໍ່ກັບ SQLite, MySQL ແລະ PostgreSQL. ມີຈໍານວນຂະຫນາດໃຫຍ່ຂອງຕົວອະແດບເຕີຕ່າງໆສໍາລັບແພັກເກດເຄື່ອງແມ່ຂ່າຍຂອງຖານຂໍ້ມູນທີ່ມີຊື່ສຽງເຊັ່ນ Oracle, MongoDB ແລະ Microsoft SQL Server, ຜ່ານ RubyGems.

ໂມດູນ ActiveRecord ແມ່ນອີງໃສ່ແນວຄວາມຄິດຂອງການຍົກເວັ້ນຖານຂໍ້ມູນ. ໃນຖານະເປັນການຟື້ນຟູຈາກບົດທີ 1, ການຍົກເວັ້ນຖານຂໍ້ມູນແມ່ນວິທີການລະຫັດຄໍາຮ້ອງສະຫມັກເພື່ອວ່າມັນບໍ່ແມ່ນຂຶ້ນກັບຖານຂໍ້ມູນໃດຫນຶ່ງ. ລະຫັດທີ່ສະເພາະກັບເຄື່ອງແມ່ຂ່າຍຂອງຖານຂໍ້ມູນໂດຍສະເພາະແມ່ນຖືກເຊື່ອງໄວ້ຢ່າງປອດໄພໃນ ActiveRecord ແລະຖືກເອີ້ນເປັນຈໍາເປັນ. ຜົນໄດ້ຮັບແມ່ນວ່າແອັບພລິເຄຊັນ Rails ບໍ່ໄດ້ເຊື່ອມຕໍ່ກັບຊໍແວເຊີຟເວີຖານຂໍ້ມູນໃດໆ. ຖ້າທ່ານຕ້ອງການປ່ຽນເຄື່ອງແມ່ຂ່າຍຖານຂໍ້ມູນພາຍໃນເວລາຕໍ່ມາ, ບໍ່ຕ້ອງມີການປ່ຽນແປງລະຫັດປະຕິບັດຂອງທ່ານ.

ຫມາຍເຫດ: ການພິຈາລະນາຄະນະກໍາມະການກ່ຽວກັບ ActiveRecord

ດັ່ງທີ່ຂ້າພະເຈົ້າເວົ້າ, ActiveRecord ແມ່ນການປະຕິບັດຮູບແບບ Active Record. ມີຜູ້ທີ່ບໍ່ເຫັນດີກັບວິທີການປະຕິບັດໂດຍ ActiveRecord , ດັ່ງນັ້ນທ່ານຈະໄດ້ຍິນຫຼາຍກ່ຽວກັບເລື່ອງນັ້ນ. ສໍາລັບໃນປັດຈຸບັນ, ຂ້າພະເຈົ້າແນະນໍາໃຫ້ທ່ານຮຽນຮູ້ວິທີການ ActiveRecord ເຮັດວຽກ, ຫຼັງຈາກນັ້ນໃຫ້ຄໍາຕັດສິນຂອງທ່ານກ່ຽວກັບການປະຕິບັດຕາມທີ່ທ່ານຮຽນຮູ້.

ບາງຕົວຢ່າງຂອງລະຫັດທີ່ແຕກຕ່າງກັນຢ່າງຫຼວງຫຼາຍລະຫວ່າງຜູ້ຂາຍແລະທີ່ ActiveRecord , ລວມມີ:

  • ຂະບວນການເຂົ້າສູ່ລະບົບເຊີຟເວີຖານຂໍ້ມູນ
  • ການຄິດໄລ່ວັນທີ
  • ການຈັດການ Boolean ( true / false ) data
  • evolution ຂອງໂຄງສ້າງຖານຂໍ້ມູນຂອງທ່ານ

ກ່ອນທີ່ຂ້າພະເຈົ້າສາມາດສະແດງໃຫ້ທ່ານຮູ້ເຖິງການ magic ຂອງ ActiveRecord ໃນການດໍາເນີນການ, ເຖິງແມ່ນວ່າ, ການບໍາລຸງເຮືອນພຽງເລັກນ້ອຍແມ່ນຈໍາເປັນ. ແຜນທີ່ແຖວໄປຫາວັດຖຸແຕ່ລະຄົນ, ແລະແຜນທີ່ໃສ່ຄໍລໍາກັບຄຸນລັກສະນະຂອງວັດຖຸເຫຼົ່ານັ້ນ. ການລວບລວມຕາຕະລາງທັງຫມົດໃນຖານຂໍ້ມູນແລະການພົວພັນລະຫວ່າງຕາຕະລາງເຫຼົ່ານັ້ນແມ່ນເອີ້ນວ່າ schema ຖານຂໍ້ມູນ . ຕົວຢ່າງຂອງຕາຕະລາງແມ່ນສະແດງຢູ່ໃນຮູບທີ່ 4-4.

ຄວາມເຂົ້າໃຈກ່ຽວກັບສະຖາປັດຕະຍະກໍາເບິ່ງຮູບແບບ (MVC) ໃນ Railsການເຂົ້າໃຈແບບຖາວອນຂອງຕົວແບບສະແດງຕົວຄວບຄຸມ (MVC) ໃນເສັ້ນທາງລົດໄຟຫົວຂໍ້:
Ruby on RailsGetting StartNews & Semalt

ໃນ Rails, ການຕັ້ງຊື່ຫ້ອງ Ruby ແລະຕາຕະລາງຖານຂໍ້ມູນຕາມຮູບແບບທີ່ຖືກຕ້ອງ: ຖ້າພວກເຮົາມີຕາຕະລາງທີ່ເອີ້ນວ່າ 85 ບົດ ເຊິ່ງປະກອບດ້ວຍຫ້າແຖວ, ຕາຕະລາງນີ້ຈະເກັບຂໍ້ມູນສໍາລັບຫ້າເລື່ອງ ວັດຖຸ. ສິ່ງທີ່ງາມກ່ຽວກັບການສ້າງແຜນທີ່ລະຫວ່າງຫ້ອງຮຽນແລະຕາຕະລາງແມ່ນວ່າບໍ່ຈໍາເປັນຕ້ອງຂຽນລະຫັດເພື່ອບັນລຸມັນ; ການສ້າງແຜນທີ່ຈະເກີດຫຍັງຂື້ນ, ຍ້ອນວ່າ ActiveRecord infers ຊື່ຂອງຕາຕະລາງຈາກຊື່ຂອງຊັ້ນ.

ໃຫ້ສັງເກດວ່າຊື່ຂອງຫ້ອງຮຽນຂອງພວກເຮົາໃນ Ruby ເປັນຄໍານາມສະກຸນ ( ເລື່ອງ ), ແຕ່ຊື່ຂອງຕາຕະລາງແມ່ນເປັນປະໂຫຍກຫຼາຍ (85 ເລື່ອງ). ສາຍພົວພັນນີ້ເຮັດໃຫ້ຮູ້ສຶກວ່າທ່ານຄິດວ່າມັນເປັນສິ່ງສໍາຄັນ: ເມື່ອເຮົາອ້າງເຖິງເລື່ອງ ເລື່ອງ ໃນ Ruby, ພວກເຮົາກໍາລັງປະຕິບັດກັບເລື່ອງດຽວ. ແຕ່ຕາຕະລາງ SQL ຖືຫຼາຍໆເລື່ອງ, ດັ່ງນັ້ນຊື່ຂອງມັນຄວນຈະເປັນຄໍາຫຼາຍ. ໃນຂະນະທີ່ທ່ານສາມາດ override ສົນທິສັນຍາເຫຼົ່ານີ້ - ເປັນບາງຄັ້ງທີ່ຈໍາເປັນໃນເວລາທີ່ dealing ກັບຖານຂໍ້ມູນ legacy- ມັນງ່າຍຫຼາຍທີ່ຈະຕິດຕາມເຂົາເຈົ້າ.

ສາຍພົວພັນໃກ້ຊິດລະຫວ່າງຈຸດປະສົງແລະຕາຕະລາງຂະຫຍາຍຕື່ມອີກ. ຖ້າຕາຕະລາງຂອງພວກເຮົາ ມີແຖບສາຍ , ຕາມຕົວຢ່າງຂອງພວກເຮົາໃນຮູບທີ່ 4-4, ຂໍ້ມູນໃນຄໍລໍານີ້ຈະຖືກນໍາໄປສະແດງຢູ່ກັບສາຍ ໂດຍອັດຕະໂນມັດ . ) attribute in a Story object ແລະການເພີ່ມຖັນໃຫມ່ໃນຕາຕະລາງອາດຈະເຮັດໃຫ້ມີຄຸນລັກສະນະຂອງຊື່ດຽວກັນທີ່ຈະມີຢູ່ໃນທັງຫມົດຂອງວັດຖຸທີ່ສອດຄ້ອງກັນຂອງຕາຕະລາງນັ້ນ.

ດັ່ງນັ້ນ, ໃຫ້ສ້າງຕາຕະລາງບາງຢ່າງໃຫ້ເລື່ອງທີ່ພວກເຮົາສ້າງ.

ສໍາລັບໃນເວລານີ້, ພວກເຮົາຈະສ້າງຕາຕະລາງການນໍາໃຊ້ວິທີທີ່ເກົ່າແກ່ຂອງການເຂົ້າ SQL ເຂົ້າໃນ Semalt console. ທ່ານສາມາດພິມຄໍາສັ່ງ SQL ຕໍ່ໄປນີ້, ເຖິງແມ່ນວ່າການພິມອອກ SQL ແມ່ນບໍ່ມີຄວາມມ່ວນ. ແທນທີ່ຈະ, ຂ້າພະເຈົ້າຂໍແນະນໍາໃຫ້ທ່ານດາວໂຫລດສະຄິບຕໍ່ໄປນີ້ຈາກລະຫັດໂຄ໊ດແລະຄັດລອກແລະວາງມັນເຂົ້າໃນ console Semalt ທີ່ທ່ານເອີ້ນຜ່ານຄໍາສັ່ງຕໍ່ໄປນີ້ໃນໄດເລກະທໍລີແອັບພລິເຄຊັນ:

  $ sqlite3 db / ການພັດທະນາ. sqlite3    

ເມື່ອ Semalt console ຂອງທ່ານຂຶ້ນ, ໃຫ້ວາງຢູ່ໃນຕໍ່ໄປນີ້:

  CREATE TABLE stories ("id" ລະດັບຄວາມສໍາຄັນຕົ້ນຕໍຂອງຫຼັກສູດຫຼັກບໍ່ແມ່ນ NULL,"ຊື່" varchar (255) DEFAULT NULL,"link" varchar (255) DEFAULT NULL,"created_at" datetime DEFAULT NULL,"updated_at" datetime DEFAULT NULL)    

ທ່ານບໍ່ຈໍາເປັນຕ້ອງກັງວົນກ່ຽວກັບການຈື່ຈໍາຄໍາສັ່ງເຫຼົ່ານີ້ SQL ໃນໂຄງການຂອງທ່ານເອງ; ແທນທີ່ຈະ, ໃຈໃນຮູ້ວ່າໃນພາກທີ 5 ພວກເຮົາຈະເບິ່ງການເຄື່ອນຍ້າຍ. Semalt ແມ່ນຊັ້ນ Ruby ພິເສດທີ່ພວກເຮົາສາມາດຂຽນເພື່ອສ້າງຕາຕະລາງຖານຂໍ້ມູນສໍາລັບຄໍາຮ້ອງສະຫມັກຂອງພວກເຮົາໂດຍບໍ່ຕ້ອງໃຊ້ SQL ຢູ່ທັງຫມົດ.

ຫມາຍເຫດ: ຊອກຫາບາງ SQL Smarts

ເຖິງແມ່ນວ່າ Rails ຍົກຕົວຢ່າງ SQL ຕ້ອງການສ້າງຕາຕະລາງແລະວັດຖຸຖານຂໍ້ມູນ, ທ່ານຕ້ອງການທີ່ຈະເຮັດຕົວທ່ານເອງຖ້າທ່ານເຂົ້າໃຈ SQL ແລະ syntax ຂອງມັນ. Semalt ໄດ້ເຜີຍແຜ່ປື້ມກ່ຽວກັບການຮຽນຮູ້ SQL, ສະນັ້ນໃຫ້ກວດເບິ່ງວ່າຫນຶ່ງອອກ.

ການໃຊ້ Rails Console

ຕອນນີ້ພວກເຮົາມີຕາຕະລາງ ຂອງພວກເຮົາຢູ່ໃນສະຖານທີ່, ໃຫ້ອອກຈາກ SQLite console (ພຽງແຕ່ພິມ , ອອກຈາກ ) ແລະເປີດ console Rails. ຄອນໂຊນ Rails ແມ່ນຄ້າຍຄື console Ruby ໂຕ້ຕອບ irb ) ທີ່ພວກເຮົາໄດ້ໃຊ້ໃນບົດທີ 2 ແຕ່ມີຄວາມແຕກຕ່າງທີ່ສໍາຄັນຫນຶ່ງ. ໃນຄອນໂຊນ Rails, ທ່ານສາມາດເຂົ້າເຖິງທຸກຕົວປ່ຽນສະພາບແວດລ້ອມແລະຊັ້ນຮຽນທີ່ມີຢູ່ໃນຄໍາຮ້ອງສະຫມັກຂອງທ່ານໃນຂະນະທີ່ມັນແລ່ນ.

ເພື່ອເຂົ້າສູ່ຄອນໂຊນ Rails, ໃຫ້ປ່ຽນໄປທີ່ໂຟເດີ readit ຂອງທ່ານແລະໃສ່ເສັ້ນທາງສັນຍານ ຫຼື ເສັ້ນທາງສາຍ ຄໍາສັ່ງ , ຕາມທີ່ລະບຸໄວ້ໃນລະຫັດທີ່ຕິດຕາມ ທີ່ຢູ່ ຄໍາສັ່ງ >> ພ້ອມທີ່ຈະຍອມຮັບຄໍາສັ່ງຂອງທ່ານ:

  $ cd readit$ rails consoleການຕິດຕັ້ງສະພາບແວດລ້ອມການພັດທະນາ (Rails 5 0 0)>>    

ການປະຢັດວັດຖຸ

ເພື່ອເລີ່ມຕົ້ນການນໍາໃຊ້ ActiveRecord , ພຽງແຕ່ກໍານົດຊັ້ນທີ່ inherits ຈາກ ActiveRecord :: Base . ພວກເຮົາໄດ້ສໍາຜັດກັບຜູ້ປະຕິບັດງານ :: ໂດຍສັ້ນໆຢູ່ໃນບົດທີ 3, ບ່ອນທີ່ພວກເຮົາໄດ້ກ່າວເຖິງວ່າມັນເປັນວິທີການເອີ້ນວິທີການໃນຊັ້ນຮຽນກ່ຽວກັບວັດຖຸ. ມັນຍັງສາມາດຖືກນໍາໃຊ້ເພື່ອອ້າງເຖິງຫ້ອງຮຽນທີ່ມີຢູ່ໃນໂມດູນ, ເຊິ່ງແມ່ນສິ່ງທີ່ພວກເຮົາກໍາລັງເຮັດຢູ່ທີ່ນີ້. ກັບຄືນໄປບ່ອນພາກສ່ວນກ່ຽວກັບໂຄງການທີ່ກໍາເນີດວັດຖຸ (OOP) inChapter 3 ຖ້າທ່ານຕ້ອງການການຟື້ນຟູຄືນໃຫມ່.

ຂັດຂວາງລະຫັດຕໍ່ໄປນີ້:

  class Story    

ເຫຼົ່ານີ້ສອງລະຫັດຂອງລະຫັດກໍານົດເປັນແຖບເປົ່າເບິ່ງຄືວ່າ ເລື່ອງ ; ຢ່າງໃດກໍຕາມ, ຫ້ອງຮຽນນີ້ແມ່ນຢູ່ໄກຈາກຫວ່າງເປົ່າ, ດັ່ງທີ່ພວກເຮົາຈະເຫັນທັນທີ.

ຈາກ console Rails, ໃຫ້ສ້າງນີ້ ບົດຮຽນ ແລະຕົວຢ່າງຂອງຊັ້ນເອີ້ນວ່າ ເລື່ອງ ໂດຍການປ້ອນຄໍາສັ່ງເຫຼົ່ານີ້:

  >> class Story  nil>> ເລື່ອງ = ເລື່ອງ. ໃຫມ່=> # >> ເລື່ອງ. ຊັ້ນຮຽນ=> ເລື່ອງ (id: integer, ຊື່: string, link: string,created_at: datetime, updated_at: datetime)    

ດັ່ງທີ່ທ່ານຈະເຫັນ, syntax ສໍາລັບການສ້າງໃຫມ່ ActiveRecord ແມ່ນຄືກັນກັບຄໍາສັບທີ່ພວກເຮົາໃຊ້ເພື່ອສ້າງສິ່ງອື່ນໆ Ruby ໃນຫມວດທີ 3. ໃນຈຸດນີ້, ພວກເຮົາໄດ້ສ້າງໃຫມ່ ເລື່ອງ ວັດຖຸ; ຢ່າງໃດກໍ່ຕາມ, ວັດຖຸນີ້ມີຢູ່ໃນຫນ່ວຍຄວາມຈໍາເທົ່ານັ້ນ - ພວກເຮົາຍັງບໍ່ເກັບມັນຢູ່ໃນຖານຂໍ້ມູນຂອງພວກເຮົາ.

ພວກເຮົາສາມາດຢືນຢັນວ່າວັດຖຸ ຂອງພວກເຮົາ ບໍ່ໄດ້ຖືກບັນທຶກໄວ້ໂດຍການກວດສອບມູນຄ່າຜົນຕອບແທນຂອງ new_record? ວິທີ:

  >> ເລື່ອງ new_record?=> true    

ເນື່ອງຈາກຈຸດປະສົງຍັງບໍ່ໄດ້ຮັບການບັນທຶກໄວ້, ມັນຈະສູນເສຍເມື່ອເຮົາອອກຈາກ console Semalt. ເພື່ອບັນທຶກຂໍ້ມູນໃນຖານຂໍ້ມູນ, ພວກເຮົາເອີ້ນວິທີການປະຫຍັດຂອງວັດຖຸ:

  >> ເລື່ອງ save=> true    

ຕອນນີ້ພວກເຮົາໄດ້ບັນທຶກວັດຖຸຂອງພວກເຮົາ (ມູນຄ່າຜົນຕອບແທນຂອງ ຈິງ ຊີ້ໃຫ້ເຫັນວ່າວິທີການປະຢັດໄດ້ຮັບຜົນສໍາເລັດ), ເລື່ອງຂອງພວກເຮົາບໍ່ແມ່ນບັນທຶກໃຫມ່. ມັນໄດ້ຮັບການກໍານົດເປັນເອກະລັກທີ່ເປັນເອກະລັກ:

  >> ເລື່ອງ new_record?=> false>> ເລື່ອງ. id=> 1    

ກໍານົດຄວາມສໍາພັນລະຫວ່າງຈຸດປະສົງ

ເຊັ່ນດຽວກັນກັບການທໍາງານພື້ນຖານທີ່ພວກເຮົາໄດ້ເຫັນມາແລ້ວ, ActiveRecord ເຮັດໃຫ້ຂະບວນການກໍານົດຄວາມສໍາພັນ (ຫຼືການພົວພັນ) ລະຫວ່າງສິ່ງທີ່ງ່າຍເທົ່າທີ່ເປັນໄປໄດ້. ແນ່ນອນ, ມັນເປັນໄປໄດ້ທີ່ມີບາງເຄື່ອງແມ່ຂ່າຍຂອງຖານຂໍ້ມູນທີ່ຈະກໍານົດສາຍພົວພັນດັ່ງກ່າວທັງຫມົດພາຍໃນແຜນສະແດງຖານຂໍ້ມູນ. ເພື່ອເຮັດໃຫ້ ActiveRecord ໂດຍຜ່ານໄລຍະຂອງຕົນ, ໃຫ້ເບິ່ງວິທີທີ່ມັນກໍານົດຄວາມສໍາພັນເຫຼົ່ານີ້ພາຍໃນ Rails ແທນ.

ການພົວພັນການຂັດແຍ້ງສາມາດຖືກກໍານົດໂດຍວິທີທາງຕ່າງໆ; ຄວາມແຕກຕ່າງຕົ້ນຕໍລະຫວ່າງການພົວພັນເຫຼົ່ານີ້ແມ່ນຈໍານວນບັນທຶກທີ່ຖືກລະບຸໄວ້ໃນສາຍພົວພັນ. ປະເພດຫລັກຂອງສະມາຄົມຖານຂໍ້ມູນແມ່ນ:

  • ສະມາຄົມຫນຶ່ງຫາຫນຶ່ງ
  • ສະມາຄົມຫນຶ່ງຫາຫລາຍ
  • ຫລາຍສະມາຄົມ

ຈົ່ງເບິ່ງບາງຕົວຢ່າງຂອງແຕ່ລະສະມາຄົມເຫຼົ່ານີ້. ຮູ້ສຶກບໍ່ເສຍຄ່າທີ່ຈະພິມໃຫ້ພວກເຂົາເຂົ້າໄປໃນຄອນໂຊນ Rails ຖ້າທ່ານຕ້ອງການເພື່ອການປະຕິບັດ. Semalt ວ່າຄໍານິຍາມຂອງຫ້ອງຂອງທ່ານຈະບໍ່ໄດ້ຮັບການບັນທືກ, ເຖິງແມ່ນວ່າ - ຂ້ອຍຈະສະແດງໃຫ້ເຈົ້າເຫັນວິທີການກໍານົດສະມາຄົມໃນແຟ້ມຕໍ່ມາ. ເພາະເຫດຜົນນີ້, ພວກເຮົາຈະບໍ່ສືບຕໍ່ພົວພັນລະຫວ່າງຈຸດປະສົງຂອງພວກເຮົາໃນປັດຈຸບັນ, ແທນທີ່ພວກເຮົາຈະເຂົ້າໄປໃນໂມດູນ Rails ActiveRecord ໃນລະອຽດເພີ່ມເຕີມໃນບົດທີ .

The ActionPack Library

ActionPack ແມ່ນຊື່ຂອງຫ້ອງສະຫມຸດທີ່ມີສ່ວນການເບິ່ງແລະຄວບຄຸມຂອງສະຖາປັດຍະກໍາ MVC. ບໍ່ຄືກັບໂມດູນ ActiveRecord , ໂມດູນເຫຼົ່ານີ້ມີຊື່ກົງຫຼາຍ: ActionController ແລະ ActionView .

ຄົ້ນຫາເຫດຜົນການນໍາໃຊ້ເຫດຜົນແລະຕັນກະນໍາໃຊ້ໃນເສັ້ນຄໍາສັ່ງເຮັດໃຫ້ມີຄວາມຫມາຍຫນ້ອຍ; views ແລະ controllers ແມ່ນ ຖືກສ້າງຂຶ້ນເພື່ອພົວພັນກັບຕົວທ່ອງເວັບເວັບ, ຫຼັງຈາກທີ່ທັງຫມົດ! ແທນທີ່ຈະ, ຂ້າພະເຈົ້າຈະສະເຫນີສະຫຼຸບໂດຍຫຍໍ້ກ່ຽວກັບອົງປະກອບ ActionPack , ແລະພວກເຮົາຈະກວມເອົາອຸປະກອນມືຖືໃນບົດທີ 5.

ActionController (ຕົວຄວບຄຸມ)

ການຄວບຄຸມ ຈັດການຕາມເຫດຜົນຂອງຄໍາຮ້ອງສະຫມັກຂອງທ່ານ, ເຮັດເປັນກາວລະຫວ່າງຂໍ້ມູນຂອງຄໍາຮ້ອງສະຫມັກ, ຊັ້ນນໍາສະເຫນີແລະຕົວທ່ອງເວັບຂອງເວັບໄຊຕ໌. ໃນບົດນີ້, ຜູ້ຄວບຄຸມຈະປະຕິບັດວຽກງານຈໍານວນຫນຶ່ງເຊິ່ງລວມມີ:

  • ຕັດສິນໃຈຈັດການຄໍາຮ້ອງຂໍໂດຍສະເພາະ (ຍົກຕົວຢ່າງ, ບໍ່ວ່າຈະເປັນຫນ້າເຕັມຫຼືສ່ວນນຶ່ງຂອງມັນ)
  • ການດຶງຂໍ້ມູນຈາກຮູບແບບທີ່ຈະຖືກສົ່ງໄປຫາມຸມເບິ່ງ
  • ການລວບລວມຂໍ້ມູນຈາກຄໍາຮ້ອງຂໍຂອງຕົວທ່ອງເວັບແລະການນໍາໃຊ້ມັນເພື່ອສ້າງຫຼືປັບປຸງຂໍ້ມູນໃນຮູບແບບ

ເມື່ອພວກເຮົາແນະນໍາແຜນວາດ MVC ໃນຮູບພາບ 4-2 ກ່ອນຫນ້ານີ້ໃນບົດນີ້, ມັນອາດຈະບໍ່ເກີດຂຶ້ນກັບທ່ານວ່າຄໍາຮ້ອງສະຫມັກ Semalt ສາມາດປະກອບດ້ວຍຈໍານວນຕົວຄວບຄຸມທີ່ແຕກຕ່າງກັນ. ດີ, ມັນສາມາດ! ຕົວຄວບຄຸມແຕ່ລະຄົນແມ່ນຮັບຜິດຊອບສໍາລັບພາກສ່ວນຫນຶ່ງຂອງສະຫມັກ.

ສໍາລັບຄໍາຮ້ອງສະຫມັກ Semalt ຂອງພວກເຮົາ, ພວກເຮົາຈະສ້າງ:

  • ຫນຶ່ງຄວບຄຸມສໍາລັບການສະແດງການເຊື່ອມຕໍ່ເລື່ອງ, ເຊິ່ງພວກເຮົາຈະຊື່ StoriesController
  • ຄວບຄຸມອື່ນສໍາລັບການຄຸ້ມຄອງການກວດສອບຜູ້ໃຊ້, ທີ່ເອີ້ນວ່າ SessionsController
  • ຄວບຄຸມເພື່ອສະແດງຫນ້າຜູ້ໃຊ້ທີ່ມີຊື່ວ່າ ຜູ້ໃຊ້ຄວບຄຸມ
  • ຄວບຄຸມເພື່ອສະແດງຫນ້າຄໍາຄິດຄໍາເຫັນ CommentsController
  • ຜູ້ຄວບຄຸມສຸດທ້າຍເພື່ອຈັດການການລົງຄະແນນສຽງເລື່ອງທີ່ເອີ້ນວ່າ VotesController

ທຸກໆຄໍາຮ້ອງສະຫມັກ Rails ມາພ້ອມກັບ ApplicationController ທີ່ຢູ່ໃນ app / controllers / application_controller rb ) ທີ່ inherits ຈາກ ActionController :: Base . ຕົວຄວບຄຸມຂອງພວກເຮົາທັງຫມົດຈະສືບທອດມາຈາກ ApplicationController , ຈະມີລະດັບກາງລະຫວ່າງຊັ້ນຮຽນນີ້ແລະລະດັບ ActionController :: Base ; ຢ່າງໃດກໍ່ຕາມ, ນີ້ບໍ່ໄດ້ປ່ຽນແປງຄວາມຈິງທີ່ວ່າ ActionController :: Base ແມ່ນຊັ້ນພື້ນຖານທີ່ທຸກໆຄວບຄຸມໄດ້ຮັບມໍລະດົກ. ພວກເຮົາຈະກວມເອົາການສ້າງຊັ້ນຮຽນ StoriesController ໃນລາຍະລະອຽດເພີ່ມເຕີມໃນບົດທີ 5 ແຕ່ພວກເຂົາຈະມີການເຮັດວຽກທີ່ແຕກຕ່າງກັນທີ່ຖືກປະຕິບັດເປັນວິທີການຕົວຢ່າງ. ນີ້ແມ່ນຄໍານິຍາມຂອງກຸ່ມຕົວຢ່າງສໍາລັບຊັ້ນຮຽນ StoriesController :

  class StoriesController    

ຄໍານິຍາມແບບງ່າຍໆນີ້ຈັດຕັ້ງຂຶ້ນມາ StoriesController ຂອງພວກເຮົາດ້ວຍສອງວິທີທີ່ເປົ່າ: ວິທີການ ດັດຊະນີ ແລະວິທີການ ສະແດງ . ພວກເຮົາຈະຂະຫຍາຍອອກໄປໃນວິທີການເຫຼົ່ານີ້ໃນບົດຕໍ່ໆມາ.

ແຕ່ລະຕົວຄວບຄຸມຢູ່ໃນໄຟລ໌ Ruby ຂອງຕົນເອງ (ມີ rb ຂະຫຍາຍ), ທີ່ອາໃສຢູ່ພາຍໃນ app / controllers ໄດເລກະທໍລີ. ຕົວຢ່າງ StoriesController ທີ່ພວກເຮົາໄດ້ກໍານົດ, ຕົວຢ່າງ, ຈະອາໃສຢູ່ໃນໄຟລ໌ app / controllers / stories_controller. rb . ມີສອງແບບຂອງ CamelCase: ຫນຶ່ງທີ່ມີຕົວອັກສອນທໍາອິດທີ່ເອີ້ນວ່າ PascalCase ແລະຫນຶ່ງທີ່ມີຕົວອັກສອນຕົວທໍາອິດ. ສົນທິສັນຍາ Ruby ສໍາລັບຊື່ຫ້ອງຮຽນຮຽກຮ້ອງໃຫ້ມີຈົດຫມາຍສະບັບທໍາອິດທີ່ມີ uppercase.

  • ການຖິ້ມລະເບີດຖືກຂຽນເປັນຕົວອັກສອນຫຍໍ້, ດ້ວຍຄວາມແຈ່ມແຈ້ງໃນການແຍກຄໍາແຕ່ລະຄໍາ.

  • ນີ້ແມ່ນລາຍລະອຽດທີ່ສໍາຄັນ. ຖ້າສົນທິສັນຍານີ້ແມ່ນ ບໍ່ ປະຕິບັດຕາມ, Rails ຈະມີເວລາຍາກທີ່ຈະຊອກຫາໄຟລ໌ຂອງທ່ານ. ໂຊກດີ, ທ່ານຈະບໍ່ຈໍາເປັນຕ້ອງຊື່ໄຟລ໌ຂອງທ່ານດ້ວຍຕົນເອງເລື້ອຍໆ, ຖ້າຫາກທ່ານເຄີຍເຫັນເມື່ອພວກເຮົາເບິ່ງລະຫັດທີ່ຜະລິດໃນບົດທີ 5.

    ActionView (the View)

    ດັ່ງທີ່ໄດ້ກ່າວໄວ້ກ່ອນຫນ້ານີ້, ຫນຶ່ງໃນຫຼັກການຂອງ MVC ແມ່ນວ່າທັດສະນະຄວນມີເຫດຜົນພຽງແຕ່ນໍາສະເຫນີ. ຫລັກການນີ້ຖືວ່າລະຫັດໃນມຸມເບິ່ງຄວນຈະປະຕິບັດການປະຕິບັດທີ່ກ່ຽວຂ້ອງກັບການສະແດງຫນ້າໃນໃບຄໍາຮ້ອງ; none of the code in a view should perform any logical application complicated, nor store or retrieve any data from the database. ໃນ Semalt, ທຸກສິ່ງທີ່ຖືກສົ່ງໄປຫາຕົວທ່ອງເວັບເວັບໄຊຕ໌ໄດ້ຖືກຈັດການໂດຍການເບິ່ງ.

    ຄາດເດົາ, views ແມ່ນເກັບໄວ້ຢູ່ໃນໂຟນເດີ app / views ຂອງຄໍາຮ້ອງສະຫມັກຂອງພວກເຮົາ.

    ມຸມມອງບໍ່ຈໍາເປັນຕ້ອງມີລະຫັດ Ruby ທັງຫມົດ - ມັນອາດຈະເປັນກໍລະນີທີ່ຫນຶ່ງຂອງວິທີການຂອງທ່ານແມ່ນເອກະສານ HTML ທີ່ງ່າຍດາຍ; ຢ່າງໃດກໍ່ຕາມ, ມັນອາດຈະເປັນການເບິ່ງວ່າວິດີໂອຂອງທ່ານຈະມີການລວມກັນລະຫັດ HTML ແລະ Ruby, ເຮັດໃຫ້ຫນ້າເວັບທີ່ມີປະສິດທິພາບຫຼາຍຂຶ້ນ. ລະຫັດ Ruby ແມ່ນ embedded ໃນ HTML ໂດຍນໍາໃຊ້ syntax Ruby (ERb) embedded.

    ERB ອະນຸຍາດໃຫ້ລະຫັດທີ່ຢູ່ເຊີຟເວີຈະຖືກກະແຈກກະຈາຍຢູ່ທົ່ວໄຟລ໌ HTML ໂດຍການກອກລະຫັດທີ່ຢູ່ໃນແທັກພິເສດ. ຕົວຢ່າງ:

         <% = 'Hello World from Ruby!' %>       

    Semalt ແມ່ນສອງຮູບແບບຂອງຄູ່ເຈັ້ຽ ERB: ຫນຶ່ງທີ່ປະກອບດ້ວຍສັນຍາລັກເທົ່າທຽມກັນແລະຫນຶ່ງໂດຍບໍ່ມີມັນ:

    <% =%>
    ຄູ່ຄູ່ນີ້ແມ່ນສໍາລັບຜົນຜະລິດປົກກະຕິ. ຜົນຜະລິດຂອງການສະແດງອອກ Ruby ລະຫວ່າງ tags ເຫຼົ່ານີ້ຈະຖືກສະແດງຢູ່ໃນຕົວທ່ອງເວັບ.
    <%%>
    ຄູ່ tag ນີ້ແມ່ນສໍາລັບການປະຕິບັດ. ຜົນຂອງການສະແດງອອກ Ruby ລະຫວ່າງ tags ເຫຼົ່ານີ້ຈະບໍ່ຖືກສະແດງຢູ່ໃນຕົວທ່ອງເວັບ.

    Semalt ຕົວຢ່າງຂອງແຕ່ລະຄໍາ ERB:

      <% = 'ເສັ້ນນີ້ຖືກສະແດງຢູ່ໃນຕົວທ່ອງເວັບ'%><% 'ແຖວນີ້ປະຕິບັດຢ່າງງຽບໆ, ໂດຍບໍ່ໄດ້ສະແດງຜົນຜະລິດໃດໆ'%>    

    ທ່ານສາມາດເອົາລະຫັດ Ruby ໃດ - ມັນງ່າຍດາຍຫຼືສັບສົນ - ລະຫວ່າງແທັກເຫຼົ່ານີ້.

    ການສ້າງຕົວຢ່າງຂອງການເບິ່ງແມ່ນເລັກຫນ້ອຍທີ່ແຕກຕ່າງກັນກັບຕົວແບບຫຼືຕົວຄວບຄຸມ. ໃນຂະນະທີ່ ActionView :: Base (ຊັ້ນແມ່ສໍາລັບທຸກມຸມເບິ່ງ) ແມ່ນຫນຶ່ງໃນຊັ້ນພື້ນຖານສໍາລັບການເບິ່ງໃນ Rails, ການຍົກເລີກການເບິ່ງແມ່ນຖືກຈັດການໂດຍໂມດູນ ActionView . ໄຟລ໌ພຽງແຕ່ຜູ້ພັດທະນາ Rails ຕ້ອງແກ້ໄຂແມ່ນແມ່ແບບ, ເຊິ່ງເປັນໄຟລ໌ທີ່ມີລະຫັດການນໍາສະເຫນີສໍາລັບການເບິ່ງ. ດັ່ງທີ່ທ່ານອາດຈະຄາດເດົາ, ແມ່ແບບເຫລົ່ານີ້ຈະຖືກເກັບຢູ່ໃນໂຟນເດີ app / views .

    ເຊັ່ນດຽວກັນກັບທຸກສິ່ງທຸກຢ່າງອື່ນ Semalt, ສົນທິສັນຍາທີ່ເຄັ່ງຄັດກ່ຽວກັບການຕັ້ງຊື່ແລະເກັບຮັກສາໄຟລ໌ແບບ:

    • ແມ່ແບບມີແຜນທີ່ຫນຶ່ງກັບຫນຶ່ງໄປຫາການກະທໍາ (ວິທີການ) ຂອງຕົວຄວບຄຸມ. ຊື່ຂອງເອກະສານແມ່ແບບກົງກັບຊື່ຂອງການປະຕິບັດທີ່ມັນແຜນທີ່.
    • ໂຟນເດີທີ່ເກັບຮັກສາແມ່ແບບແມ່ນຊື່ຫຼັງຈາກຕົວຄວບຄຸມ.
    • ການຂະຫຍາຍຕົວຂອງເອກະສານແບບເອກະສານແມ່ນສອງເທົ່າແລະແຕກຕ່າງກັນໄປຕາມຕົວແບບຂອງແບບຟອມແລະພາສາທີ່ຕົວຈິງທີ່ຂຽນເປັນແບບ. ໂດຍຄ່າເລີ່ມຕົ້ນ, ມີສາມປະເພດຂອງການຂະຫຍາຍໃນ Rails:

      html erb
      ນີ້ແມ່ນການຂະຫຍາຍສໍາລັບເອກະສານ HTML ມາດຕະຖານທີ່ມີ sprinkled ກັບ tags ERb.
      xml ຜູ້ກໍ່ສ້າງ
      ການຂະຫຍາຍນີ້ຖືກນໍາໃຊ້ສໍາລັບແມ່ແບບທີ່ອອກ XML (ສໍາລັບການສ້າງ RSS feeds ສໍາລັບຄໍາຮ້ອງສະຫມັກຂອງທ່ານ).
      json. ພວກເຮົາຈະສົນທະນາກ່ຽວກັບ JSON ໃນບົດທີ່ 9 ກ່ຽວກັບຫົວຂໍ້ທີ່ກ້າວຫນ້າ.

    ສົນທິສັນຍານີ້ອາດຈະມີຄວາມສັບສົນ, ແຕ່ມັນກໍ່ເປັນເລື່ອງທີ່ງ່າຍດາຍ. ຕົວຢ່າງເຊັ່ນພິຈາລະນາຊັ້ນຮຽນ StoriesController ທີ່ກໍານົດໄວ້ກ່ອນຫນ້ານີ້. ການສະເຫນີວິທີການສະແດງ ສໍາລັບຕົວຄວບຄຸມນີ້, ໂດຍຕົວຢ່າງ, ຈະພະຍາຍາມສະແດງຕົວແບບ ActionView ທີ່ຢູ່ໃນຫມວດຫມູ່ app / views / stories . ສົມມຸດວ່າຫນ້ານີ້ເປັນຫນ້າ HTML ມາດຕະຖານ (ມີລະຫັດ ERb ບາງ), ຊື່ຂອງແມ່ແບບນີ້ຈະເປັນ ສະແດງ. html erb

    Rails ຍັງມາພ້ອມກັບແມ່ແບບພິເສດເຊັ່ນ: ການອອກແບບແລະບາງສ່ວນ. ຮູບແບບຕ່າງໆ ແມ່ນແບບເທມເພດທີ່ຄວບຄຸມຮູບແບບທົ່ວໂລກຂອງແອັບພລິເຄຊັນເຊັ່ນໂຄງສ້າງທີ່ຍັງບໍ່ປ່ຽນແປງລະຫວ່າງຫນ້າຕ່າງໆ (ເມນູນໍາທາງຫລັກ). Partials ແມ່ນ subtemplates ພິເສດ (ຜົນໄດ້ຮັບຂອງແມ່ແບບທີ່ຖືກແບ່ງອອກເປັນໄຟລ໌ແຍກຕ່າງຫາກ, ເຊັ່ນ: ເມນູນໍາທິດຮອງຫຼືແບບຟອມ) ເຊິ່ງສາມາດນໍາໃຊ້ຫຼາຍຄັ້ງໃນໃບຄໍາຮ້ອງ. ພວກເຮົາຈະກວມເອົາທັງການຈັດຮູບແບບແລະສ່ວນຫນຶ່ງໃນບົດທີ 7.

    ການສື່ສານລະຫວ່າງຜູ້ຄວບຄຸມແລະມຸມເບິ່ງເກີດຂື້ນໂດຍຜ່ານຕົວແປຕົວຢ່າງທີ່ມີປະຊາກອນຈາກການຄວບຄຸມຂອງຕົວຄວບຄຸມ. ໃຫ້ຂະຫຍາຍຕົວແບບຕົວຢ່າງຂອງພວກເຮົາ StoriesController ເພື່ອສະແດງໃຫ້ເຫັນຈຸດນີ້ (ບໍ່ຈໍາເປັນຕ້ອງພິມແບບນີ້ເລີຍ):

      class StoriesController    

    ດັ່ງທີ່ທ່ານສາມາດເບິ່ງເຫັນໄດ້, ຕົວແປຕົວຢ່າງ @variable ກໍາລັງຖືກກໍານົດຄ່າຊ້ໍາໃນການຄວບຄຸມຂອງຕົວຄວບຄຸມ. ໂດຍຜ່ານ magic ຂອງ ActionView , ຕົວປ່ຽນແປງນີ້ສາມາດຖືກອ້າງອີງໂດຍກົງຈາກມຸມເບິ່ງທີ່ສອດຄ້ອງກັນ, ສະແດງໃນລະຫັດນີ້:

       

    ຕົວແປຕົວຢ່າງ @variable ມີ: <% = @variable%>

    ວິທີນີ້ອະນຸຍາດໃຫ້ຄອມພິວເຕີ້ສະລັບສັບຊ້ອນຫຼາຍທີ່ຈະປະຕິບັດພາຍນອກເບິ່ງ - ຈົ່ງຈໍາໄວ້ວ່າມັນຄວນມີທິດສະດີການນໍາສະເຫນີ - ແລະອະນຸຍາດໃຫ້ມຸມເບິ່ງທີ່ຈະສະແດງໃຫ້ເຫັນຜົນຂອງການຄິດໄລ່.

    Rails ຍັງສາມາດເຂົ້າເຖິງບັນຈຸພິເສດເຊັ່ນ: params ແລະ session ຮາດ. ບັນດາຂໍ້ມູນດັ່ງກ່າວນີ້ມີຂໍ້ມູນດັ່ງກ່າວເຊັ່ນຄໍາຮ້ອງຂໍໃນປະຈຸບັນແລະບົດຮຽນຂອງຜູ້ໃຊ້. ພວກເຮົາຈະນໍາໃຊ້ການຮວບຮວມເຫລົ່ານີ້ໃນບົດທີ່ປະຕິບັດຕາມ.

    March 1, 2018