2012-04-06 73 views
1

我包括一個格式化我的JSON數據的自定義方法。如何將參數從Controller傳遞到Ruby on Rails中的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 - 這很容易!我想我沒有意識到模型中的方法已經被當前用戶使用。謝謝。 – 2012-04-06 20:54:31

+1

但是如果我想傳遞一個參數以及方法名稱呢?我想傳遞請求對象,因爲這個對象不能通過模型​​訪問。 – inquisitive 2015-01-30 06:12:28

相關問題