2011-08-18 84 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

相关问题