2012-08-03 32 views
0

我正在和Jose Valim的active_model_serializers Gem玩。josevalim/active_model_serializers控制器參數錯誤

我試圖在我的控制器中調用自定義序列化程序,它看起來像:json沒有使用ActiveModel::ArraySerializer

當我在控制器中定義default active_model_serializer時,串行器工作正常;然而,當我打電話控制器一個自定義是這樣的:

render :json => @project, :serializer => ProjectSerializer 

我收到以下錯誤:

wrong number of arguments (0 for 1) 

我使用Ruby 1.9.2和Rails 3.2.7。任何幫助表示讚賞,因爲我需要爲任何給定的模型創建幾個不同的序列化器。

謝謝!

+0

你確定錯誤是在那一行嗎? 'render'的簽名是'render(* args,&block)',所以即使'@project'是'nil',你也不會得到這個錯誤。另外,你的ProjectSerializer代碼是什麼樣的? – jordanpg 2012-08-03 20:32:28

+1

如果'@project'是一個數組,它應該可能被命名爲'@projects'。這不會解決問題,但它會更有意義並有助於調試。 – tee 2012-08-14 19:58:25

回答

0

所以我一定是在破解或什麼的。 :serializer調用只接受數組的對象。

渲染:JSON => @project,:串行=> ProjectWithTaskEstimateSerializer

當要呼叫需要使用each_serializer物體的陣列中的每個對象上的串行化器。我不知道我是如何錯過這一點的。

render:json => @project,:each_serializer => ProjectSerializer

+0

使用json數組調用render時,可以同時使用':serializer'和':each_serializer'選項。 ':serializer'會覆蓋ArraySerializer。 ':each_serializer'將覆蓋數組中每個對象的序列化程序。 – tee 2012-08-14 20:00:19