Form_for căn bản

Xin chào các bạn. Hôm nay mình xin giới thiệu về FormHelper trong Rails.

  1. FormHelper là gì?

Form helpers là form được thiết kế để làm việc với resources dễ dàng hơn so với sử dụng HTML

Form thường được dùng để createupdate tài nguyên và sử dụng:

  • url: Cái mà form sẽ gửi đến và kết quả trả về trong 1 request sẽ được chuyển đến action controller thích hợp Ví dụ
<%= form_for @_person do |f| %>
.
.
.
<% end %>

@_person => form sẽ biêt update or create là update/create một @_person sẽ hướng đến url Và những thay đổi trong form sẽ được thực hiện trong updatecreate action trong persons_controller

localhost:3000/persons/1/new
or
localhost:3000/persons/1/edit
  • input fields: tên input files trùng với tên của tài nguyên
<%= f.text_field :first_name %><br />
# first_name là thuộc tính first_name trong database @_person
  • input field sẽ hiển thị giá trị thuộc tính hiện tại của tài nguyên.

Ví dụ: Create new @_person trong PeopleController#new action biến là @_person trong file new.html.erb

<%= form_for @_person do |f| %>
  <%= f.label :first_name %>
  <%= f.text_field :first_name %><br />

  <%= f.label :last_name %>:
  <%= f.text_field :last_name %><br />

  <%= f.submit %> # = button submit trong html
<% end %>
  • method action của form mặc định là "Post" nếu không khai báo method ví dụ method: :put
  1. Sau đây mình xin giới thiệu một số methods của form thường dùng

a) Checkbox

Tạo ra một checkbox.

<%= f.checkbox :remember_me %>

b) Email

<%= f.email_field :email %>

Tạo ra một field type text nhập email

  1. Sử dụng bootstrap vào form
  • Để sử dụng css vào form_for các bạn thêm trường
  • Ở form_for để sử dụng css bạn phải thêm html: {class: "form-horizontal"}
 <%= form_for @_person,html: {class: "form-horizontal"} do |f| %>

Còn trong fields thì bạn chỉ cần thêm class: "css boot_strap"

 <div class="form-group">
   <%= f.label "Name", class: "control-label col-md-3" %>
   <div class="col-md-9">
     <%= f.text_field :name, class: "form-control" %>
   </div>
 </div>

Thôi tạm thế đã. Đây là sơ lược về form_for. Còn rất nhiều vấn đề mình cũng chửa nắm được đang tìm hiểu. Nếu có gì sai xót mong các bạn góp ý. Còn nhiều vấn đề về form_for thú vị như nested_form_for nếu có time mình sẽ giới thiệu các bạn tiếp về form_for nếu mình tìm hiểu được gì thêm.

Tài liệu tham khảo

http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html