отображение current_user.name как «я» в опциях для поля выбора - PullRequest
0 голосов
/ 18 августа 2011

Как включить current_user в параметры выбора, но сопоставить его имя со словом «я»?

Пользователь может назначать задачи другим пользователям через раскрывающийся список выбора, но если другой пользователь не выбран,Задача должна быть назначена этому пользователю.В настоящее время я создаю это с помощью обычного тега select с моим собственным помощником для параметров:

 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 paramприсутствует и установите его в current_user, если нет.Я знаю, брутто, и это становится запахом.

Итак, я хотел бы включить current_user в user_select, но сопоставить их user.name как «я».Любые идеи?

(Я смотрел в options_for_select и collection_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 Ответ

1 голос
/ 18 августа 2011

Вы должны включить "я", только если 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...