Series Hướng Dẫn Lập Trình Ruby on Rails (Phần 8) - Các kỹ thuật trong Rails bạn nên biết(2)
Chào các bạn, Hôm nay mình sẽ tiếp tục Series Hướng Dẫn Lập Trình Ruby on Rails (Phần 8) - Các kỹ thuật trong Rails bạn nên biết - 2 Ở phần này mình sẽ giới thiệu các kỹ thuật trong ActionView - View và ActionController - Controller ActionView - View Guides: http://guides.rubyonrails.org/act ...
Chào các bạn,
Hôm nay mình sẽ tiếp tục Series Hướng Dẫn Lập Trình Ruby on Rails (Phần 8) - Các kỹ thuật trong Rails bạn nên biết - 2 Ở phần này mình sẽ giới thiệu các kỹ thuật trong ActionView - View và ActionController - Controller
ActionView - View
Guides: http://guides.rubyonrails.org/action_view_overview.html
Đối với ActionView ta nến biết những kỹ thuật sau đây:
ERB Template
Guides: http://guides.rubyonrails.org/action_view_overview.html#templates
Khái quát về định nghĩa: Embedded Ruby(ERB) là một tính năng của Ruby cho phép bạn nhúng code Ruby vào một trang HTML thông qua các thẻ của nó:
Thẻ <% %> : được sử dụng để thực thi Ruby code mà không trả về bất cứ giá trị nào. Ví dụ như: lệnh điều kiện if else, lệnh lặp loop each for while,.. Thẻ <%= %>: được sử dụng để chèn một giá trị nào đó mà bạn muốn xuất ra trên View. Ví dụ:
<h1>Names of all the people</h1> <% @people.each do |person| %> Name: <%= person.name %><br> <% end %>
Partial
Guides: http://guides.rubyonrails.org/action_view_overview.html#partials
Khái quát về định nghĩa: Với Partial bạn có thể tách phần source code ở view ra thành các file riêng biệt để tái sử dụng trong các trường hợp cần thiết, trùng lặp code,...việc sử dụng partial khiến code của bạn trở nên mạch lạc, rõ ràng hơn, người ta hay gọi là clean code :v
Khi dùng partial sẽ thường sử dụng từ khóa render vd:
<%= render "shared/menu" %>
FormHelper
Guides: http://guides.rubyonrails.org/action_view_overview.html#formhelper
Khái quát về định nghĩa: Form helpers được hiểu như là thư viện các thẻ HTML được customize lại theo source code của Ruby nhằm giúp người dùng có thể dễ dàng tương tác dữ liệu giữa view và models. Bản chất của các thẻ FormHelper này sau khi biên dịch vẫn là các thẻ HTML thuần. vd:
# Note: a @person variable will have been created in the controller (e.g. @person = Person.new) <%= form_for @person, url: { action: "create" } do |f| %> <%= f.text_field :first_name %> <%= f.text_field :last_name %> <%= submit_tag 'Create' %> <% end %>
Các thẻ HTML được sinh ra sẽ như thế này
<form action="/people/create" method="post"> <input id="person_first_name" name="person[first_name]" type="text" /> <input id="person_last_name" name="person[last_name]" type="text" /> <input name="commit" type="submit" value="Create" /> </form>
Ở phần này có một thẻ mà mình nghĩ các bạn nên lưu ý đó là thẻ fields_for, thẻ này thường được sử dụng để tạo đồng thời các đối tượng con trong đối tượng cha. vd: Person has_many: Permission Bây giờ ta muốn tạo đồng thời đối tượng Person, và cấp Permission luôn cho Person đó ta sẽ sử dụng thẻ fields_for vd:
<%= form_for @person, url: { action: "update" } do |person_form| %> First name: <%= person_form.text_field :first_name %> Last name : <%= person_form.text_field :last_name %> <%= fields_for @person.permission do |permission_fields| %> Admin? : <%= permission_fields.check_box :admin %> <% end %> <% end %>
CacheHelper - content_for
Guides http://guides.rubyonrails.org/action_view_overview.html#cachehelper
content_for
Phàn này chỉ có thẻ này là đáng lưu ý, Rails sử dụng cơ chế template để load tất cả các view vào một file layout có sẵn trước (application.html.erb) Việc load layout sẽ load luôn tất cả phần CSS và JS, nhưng có một số trường hợp các bạn chỉ muốn load file CSS, JS ở view này nhưng ở view khác lại không, để tránh việc bị trùng và bị giảm performance. Việc này hoàn toàn có thể làm được với thể content_for. Nó cho phép các bạn render các file cần thiết vào layout chính, từ các view khác. vd: app/views/layouts/application.html.erb
<html> <head> <title>Welcome!</title> <%= yield :special_script %> </head> <body> <p>Welcome! The date and time is <%= Time.now %></p> </body> </html>
app/views/articles/special.html.erb
<p>This is a special page.</p> <% content_for :special_script do %> <script>alert('Hello!')</script> <% end %>
ActionController - Controller
Guides: http://guides.rubyonrails.org/action_controller_overview.html
Đây tất cả những gì liên quan đến ActionController Rails nó đã nó sẵn 1 bài rất tường tận và chi tiết như ở trên, các bạn muốn thành master Ruby on Rails thì chịu khó nuốt hết nhé (lol)
Ở bài này mình chỉ nêu ra những kỹ thuật tiêu biểu mà mình cho là nên biết mà thôi