在选择字段的选项中将current_user.name映射为“我”
问题描述:
如何在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
手动创建的“我”,插入第一个作品了。
答
只有当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)
“我”(又名current_user)将始终属于该帐户。我只想在选择选项中将他的user.name替换为“我”。 – GoodGets
我认为设置'我'变量,然后将其插入0将工作,虽然...不知道是否有更优雅的解决方案,虽然 – GoodGets
我编辑我的帖子,包括我的最终代码。虽然我觉得它可能会被重构一些,但它很有用,规格可以通过,我很高兴。谢谢你fl00r。 – GoodGets