2011-07-27 5 views
2

コントローラに次のマッピングがあります(@initial_matchesはSQLクエリを表します)。変数をそれぞれ|listing|に付けたいとします。たとえば、いくつかの基準に基づいてスコアを追加し、それをそれぞれに付け加えて、私の見解で参照したいとしましょう。それを行う方法はありますか?railsはマッピングに変数を追加します

@refined_list = @initial_matches.map { |listing| 
     listing_location = MultiGeocoder.geocode(listing.location) 
     listing_location.distance_from(user_location, :units=>:miles) > distance.to_f ? nil : listing 
     @new_variable = listing.some_criteria //NOT WORKING 
    }.compact 

答えて

0

@new_variableは、ループのたびに上書きされます。このタイプのものはあなたのモデルの方がいいでしょう。モデルの属性に基づいてスコアを計算し、ビューで呼び出すリストモデルのメソッドを作成します。

+0

うまくいくかもしれませんが、スコアは現在ログインしているユーザーに基づいていますが、リストモデルで動作するかどうかはわかりません。 – Lisa

+0

もちろん、現在のユーザーを呼び出しに渡すだけです。 'listing.compute_score(@current_user) ' –

+0

hm、私はこれを研究しなければなりません。どこから始めたらいいのでしょうか? >。< - 私は自分の質問にあったマッピングをモデルに移すことができますか、それともうまくいかないでしょうか – Lisa