使用form_for時,其中的欄位必須是Model有的屬性,那如果資料庫沒有這個欄位呢?這時候你依需要在Model程式中加上存取方法,例如:
class Event < ActiveRecord::Base
#...
def custom_field
# 根據其他屬性的值或條件,來決定這個欄位的值
end
def custom_field=(value)
# 根據value,來調整其他屬性的值
end
end
這樣就可以在form_for裡使用custom_field了。
<%= form_for @event do |f| %>
<%= f.text_field :custom_field %>
<%= f.submit %>
<% end %>
2、虚拟属性(Virtual Attribute)
有時候表單裡操作的屬性資料,不一定和資料庫的欄位完全對應。例如資料表分成first_name和last_name兩個欄位好了,但是表單輸入和顯示的時候,只需要一個屬性叫做full_name,這時候你就可以在model裡面定義這樣的方法:
def full_name
"#{self.first_name} #{self.last_name}"
end
def full_name=(value)
self.first_name, self.last_name = value.to_s.split(" ", 2)
end
如何处理Model中不存在的属性-虚拟属性
最新推荐文章于 2022-10-21 02:50:01 发布