0

collection_select を使用してドロップダウン メニューを作成する際に問題が発生しています。すべてのガイドはこう言っています

<%= collection_select(:page, :user_id, @users, :id, :full_name) %>

動作するはずですが、サーバーを実行すると、ユーザーのリストが表示される代わりに、空のリストが表示されます。関連付けは、ページがユーザーに属し、ユーザーには多くのページがあり、 @users = User.all を呼び出したときにコントローラーで取得する必要があるユーザーがデータベースに存在することです。

ドロップダウンリストにデータを入力する方法について何か考えはありますか?

4

2 に答える 2

1

@usersの変数に何かをロードしますPageControllerか?

(意味的に) コントローラーに属さない場合は、ヘルパー メソッドにします。

module PagesHelper
  def users_for_select
    User.all
  end
end

そしてビューで

<%= collection_select(:page, :user_id, users_for_select, :id, :full_name) %>

:full_nameユーザーインスタンスの適切な方法であるコンソールでも確認してください

User.first.full_name

編集:full_nameフォールバックのあるメソッドの提案

class User < ActiveRecord::Base
  def full_name
    "#{first_name} #{last_name}".presence or name
  end
end
于 2012-09-28T15:05:40.857 に答える
1

私もapidocumentsを調べました。

どこかで、呼び出しメソッドが nil の場合、:prompt または :include_blank を含めないと選択は行われないと書かれています。

試す<%= collection_select(:page, :user_id, @users, :id, :full_name, :prompt=>true) %>

于 2012-09-28T13:40:47.317 に答える