在Rails中,Action View的Helpers方法指的是在用在樣版(Template)中的輔助方法,用來將資料轉化為可輸出的HTML格式。例如在之前用到的link_to、form_for都是Helpers。
表單輔助方法
Rails在處理表單上主要可方為兩個類型。
第一個類型是綁定Model物件的form_for方法,它的好處在於透過傳入Model物件,可以在修改的時候自動幫你將預設值帶入。
例如:
<%= form_for @guest do |g| %>
<%= g.text_field :title %>
<%= g.submit %>
<% end %>
另一種則是不需綁定Model的表單,則可使用form_tag方法,例如:
<%= form_tag "/search" do %>
<%= text_field_tag :keyword %>
<%= submit_tag %>
<% end %>
form_tag和form_for類似,但使用上不需要綁定既有Model的欄位,也不需使用Block區塊變數|g|,其中的欄位Helper需要多加_tag結尾。
幾個常用的表單欄位輔助方法:
text_field
text_area
radio_button
check_box
select
select_date, select_datetime
submit
如何處理Model中不存在的屬性
使用form_for時,欄位必須對應Model存在的欄位,但如果Model沒有這個欄位的話,則必須要在Model上加上存取方法,例如:
class Guest < ActiveRecord::Base
#...
def custom_field
# 根據其他屬性的值或條件,來決定這個欄位的值
end
def custom_field=(value)
# 根據value,來調整其他屬性的值
end
end
這樣就可以在form_for裡使用custom_field了。
<%= form_for @guest do |g| %>
<%= f.text_field :custom_field %>
<%= f.submit %>
<% end %>