2011-08-18 85 views
0

如何在select選項中包含current_user,但將其名稱映射爲「我」?在選擇字段的選項中將current_user.name映射爲「我」

用戶可以通過選擇下拉菜單爲其他用戶分配任務,但如果沒有選擇其他用戶,則該任務應分配給該用戶。我目前正在與一個正常的選擇標籤用我自己的幫手選項構建這樣的:

def user_select account 
    account.users.reject{|u| u == current_user }.map {|user| [user.name, user.id]}  
end 

,並在形式

 = f.select :user_id, user_select(@account), { :include_blank => 'me' } 

我檢查,看看是否:USER_ID參數是存在並設置如果不是,則將其發送給current_user。我知道,總之,這成了一種氣味。

所以,我想在user_select中包含current_user,但將他們的user.name映射爲「我」。有任何想法嗎? (我已經查看了options_for_select和collections_for_select,雖然兩者都允許你傳入默認值,但你不能真正設置值,或者,你可以默認選擇current_user,但我的方式是,現在做它將使用他們的實際名稱而不是「我」)。

編輯: 按fl00r的建議,我已經改變了user_select到:

def user_select account 
    me = ["me", current_user.id]  
    account.users.reject{|u| u == current_user }.map {|user| [user.name, user.id]}.insert(0, me) 
    end 

手動創建的「我」,插入第一個作品了。

回答

1

只有當current_user屬於帳戶時,您才需要包含「我」?

def user_select(account) 
    me = ["me", current_user.id] 
    account.users.reject{|u| u == current_user }.map{|user| [user.name, user.id]}.insert(0, me) 
end 

= f.select :user_id, user_select(@account) 
+0

「我」(又名current_user)將始終屬於該帳戶。我只想在選擇選項中將他的user.name替換爲「我」。 – GoodGets

+0

我認爲設置'我'變量,然後將其插入0將工作,雖然...不知道是否有更優雅的解決方案,雖然 – GoodGets

+0

我編輯我的帖子,包括我的最終代碼。雖然我覺得它可能會被重構一些,但它很有用,規格可以通過,我很高興。謝謝你fl00r。 – GoodGets

相關問題