2012-04-06 34 views
1

私のjsonデータをフォーマットするためのカスタムメソッドが含まれています。Ruby on RailsのControllerからModelメソッドに引数を渡すには?

私のコントローラは次のようになります。

("def" is taken out for brevity sake) 

respond_to do |format| 
    format.json { render json: @user, :methods => [:follower_count(params[:id])] } 
end 

私のモデルは次のようになります。

def follower_count user_id 
    User.find(user_id).friendships.count 
    end 

しかし、これは '(' 予期しない、構文エラーがスローされます

私はコントローラーのfollower_countメソッドに引数を渡す方法がわからない場合正方形でラップしようとしました - 機能しませんでした括弧で囲まれていませんでしたがまだ動作しませんどのように引数を渡しますか?

答えて

2

構文エラーは、記号:follower_countを関数として使用しようとしていることを示しています。しかし、主な問題は、Userクラスのすべてのインスタンスメソッドで@idとして利用可能な場合に、user_idをインスタンスメソッドに渡す理由です。

# controller 
format.json { render json: @user, :methods => [:follower_count] } 

# User.rb 
def follower_count 
    friendships.count 
end 
+0

うわー:

正しいコードは次のようになります。 Touche - それははるかに簡単です!私は、モデル内のメソッドが、現在のユーザーに対してすでにスコープされていることを認識していなかったと思います。ありがとう。 –

+1

しかし、メソッド名と共に引数を渡したいのですが?このオブジェクトはモデルからアクセスできないため、要求オブジェクトを渡したい。 – inquisitive

関連する問題