0

私は最初の Ruby on Rails プロジェクトに参加しており、選択ボックスにユーザーのリストを表示しようとしています。すべてのユーザーを表示したい (現在ログインしているユーザーを除く)。

モデル、ビュー、およびコントローラーで次のコードを使用して、今その部分を削除しました。

リクエスト コントローラー:

def new
  @request = Request.new
  @users = User.without_user(current_user)
end

新しいリクエスト ビュー:

<div class="field">
  <%= f.label :user_id, 'Select user' %>
  <br />
  <%= select_tag(:user_id, options_for_select(@users)) %>
</div>

ユーザー モデル:

scope :without_user,
      lambda{|user| user ? {:conditions =>[":id != ?", user.id]} : {} }

これはすべてうまく機能しますが、私の選択ボックスにはユーザーの object_id が入力されています。たとえば、そのobject_idを名/姓の組み合わせに変換するにはどうすればよいですか? 私は次のようなことをしてみました:

<%= select_tag(:user_id, options_for_select(@users.first_name)) %>

しかし、それは私に「未定義のメソッドエラー」を与えました. これを処理する最良の方法は何ですか?

4

2 に答える 2

0

必要なのはoptions_from_collection_for_select.

あなたの場合は次のようになります。

<%= select_tag(:user_id, options_from_collection_for_select(@users, :id, :first_name)) %>

それと他のヘルパーの詳細については、こちらをご覧ください

于 2012-05-04T17:47:17.487 に答える
0

ビューの select_tag には、次のものを含めることができます。

<%= select_tag(:user_id, options_from_collection_for_select(@users, :id, :first_name)) %>

これにより first_name が表示され、ユーザーがオプションの 1 つを選択すると、それが select タグuser idの属性に入力されます。value

フルネームを表示したい場合は、ユーザーモデルにメソッドを含めることができます:

def full_name
  return first_name + " " + last_name
end

そして、あなたの見解では:

<%= select_tag(:user_id, options_from_collection_for_select(@users, :id, :full_name)) %>

詳細については、options_from_collection_for_select こちらを参照してください。

于 2012-05-04T17:44:58.060 に答える