form_for trong rails
form_for là một phương thức trong helper để tạo ra đoạn mã html nhằm mục đích xây dựng thẻ <form></form> ví dụ: <%= form_for :person do |f| %> First name: <%= f.text_field :first_name %><br /> Last name : <%= f.text_field :last_name %><br /> ...
form_for là một phương thức trong helper để tạo ra đoạn mã html nhằm mục đích xây dựng thẻ <form></form> ví dụ:
<%= form_for :person do |f| %> First name: <%= f.text_field :first_name %><br /> Last name : <%= f.text_field :last_name %><br /> Biography : <%= f.text_area :biography %><br /> Admin? : <%= f.check_box :admin %><br /> <%= f.submit %> <% end %>
-
tham số đầu tiên chuyền vào form_for là một record, có thể là một biến instance sinh ra từ trong controller @user nó sẽ thông qua biến đó để set action cho form_for
-
có thể set controller và action thủ công bằng cách sử dụng:
<%= form_for :user, url: {action: :index, controller: :statics} do |f|%> <%= f.text_field :name %> <% end %>
-
chúng ta có thể set lại method truyền lên của một form bằng thuộc tính method: :<tên mothed> trong thẻ form_for ví dụ:
<%= form_for :user, url: {action: :index, controller: :statics}, method: :patch do |f|%> <%= f.text_field :name %> <% end %>
-
nhìn code trên, biến f đưa ra một khối đối thuộc FormBuiler hiện thực hóa đối tượng model :person, đối tượng mà được truyền vào form_for
-
từ biến f có thể sử dụng các phương thức FormHelper để tạo ra các thẻ input, checkbox,...
-
tạo thẻ input text:
<%= f.text_field :first_name %><br />
-
tạo thẻ input password:
<%= f.password_field :first_name %><br />
-
tạo thẻ checkbox:
<%= f.check_box :paid %>
-
thẻ cực kỳ quan trong đó là submit
<%= f.submit "login" %>
...còn rất nhiều thuộc tính nữa
- nếu muốn thêm các id, class cho các thẻ input chỉ cần thêm thuộc tính id: "abc", class: "abc"
<%= f.text_field :first_name, id: "abc", class: "abc" %><br />
- cách bắt các biến do form gửi lên trong controller:
- ta có thể sử dụng params để lấy thông tin truyền lên
ví dụ:
- đối với record là **:session **và field có name là :email => params[:session][:email]
- còn đối với biến là instance thì dùng ta sẽ gọi trường truyền vào symbol đầu tiền là trùng với tên của biến đó: @user => params[:user][:email] còn rất nhiều điều thú vị về form_for khác, bạn có thể xem tại đây: http://apidock.com/rails/ActionView/Helpers/FormHelper/form_for
- ta có thể sử dụng params để lấy thông tin truyền lên
ví dụ:
-