我有一個用戶模型,其中包含2個布爾值在數據庫中 - 管理員和只讀。基本上這允許我有3個訪問級別(只讀,可編輯和管理員)。Rails如何使用虛擬屬性f.select
我有一個屏幕,允許管理員編輯其他用戶的權限。我使用f.select創建了一個下拉列表,並且創建了一個名爲「permission」的虛擬屬性,而不是有2個複選框用於布爾值admin和readonly。
當保存用戶權限時,一切都可以正常工作,唯一的問題是,當您轉到某個用戶的編輯頁面時,它不會在下拉列表中以用戶的實際權限加載該頁面。它只是加載下拉中的第一個值作爲默認值。
我該如何做到這一點,所以當第一次加載用戶編輯頁面時,此下拉菜單顯示用戶的實際權限?
這裏是我的虛擬屬性代碼爲我的用戶模型:
# get the permission
def permission
if self.read_only
@permission = 'readonly'
elsif self.admin
@permission = 'admin'
else
@permission = 'editable'
end
end
# Set the permission.
def permission=(value)
p "VALUE = #{value}"
if value == 'readonly'
self.read_only = true
self.admin = false
@permission = 'readonly'
elsif value == 'admin'
p "INSIDE admin"
self.read_only = false
p "before #{self.admin}"
self.admin = true
p "after #{self.admin}"
@permission = 'admin'
elsif value == 'editable'
self.read_only = false
self.admin = false
@permission = 'editable'
end
end
,這裏是我在我的表單視圖f.select:
<%= f.select :permission, options_for_select([['Admin', 'admin'], ['Read Only', 'readonly'], ['Editable', 'editable']], {:disabled => @permissions_disabled}) %>
我試着用collection_select,但無法弄清楚如何填充列表。
啊是的,刪除'options_for_select'它有頁面加載時的選定值。 – Catfish 2013-03-11 13:14:58