2011-09-15 4 views
2

私はRailsで書いたヘルパーにアクセスするにはどうしたらいいですか?

<div class="field"> 
     <%= f.label :assignee, "Assigned to" %> 
     <%= select(:task, :assignee_id, User.get_array_of_names_and_user_ids)%> 
    </div> 

に入力すると残念ながらそれはそれを見ることができないuser_helper.rbに

module UserHelper 
    def get_array_of_names_and_user_ids 
    User.all(&:first_name) + User.all.map(&:user_id) 
    end 
end 

を私のユーザモデルのためのヘルパーを書きました。どこが間違っていますか?私はdeviseを使用しています。

答えて

4

もうすぐです。ヘルパーはそのようなクラスメソッドにはなりません。ビューのメソッドとしてアクセスできるようになります。 get_array_of_names_and_user_idsに電話するだけです。

0

ヘルパーは、ビューに呼び出すことができるメソッドだけでなく、

2

ヘルパーは、モデルのビューではないためですget_array_of_names_and_user_idsを呼び出す モデルに呼び出されるメソッドです。 モデルのためには、Railsは、この目的のためにcollection_selectと呼ばれるヘルパーを提供してあなたが手のコードに、このヘルパーを必要としないユーザーモデル

class User 
    def self.get_array_of_names_and_user_ids 
    User.all(&:first_name) + User.all.map(&:user_id) 
    end 
end 
1

でクラスメソッドを定義する必要があります。あなたのビューで

は、単純にこれを追加します。

<%= collection_select(:task, :assignee_id, User.all, :id, :first_name, 
    :prompt => true) %> 

注:私はあなたがあなたのDB(< 30)内のユーザーの小規模なセットを持っていると仮定しています

。それ以外の場合は、他のコントロールを使用してユーザーを選択する必要があります。

関連する問題