collection.fetch メソッドを使用して、バックボーン サーバーと完全に同期できます。
UserActionCollection extends Backbone.Collection
url: "/api/user_actions"
model: UserActionModel
userActions = new UserActionCollection()
userActions.fetch()
これにより、予想されるモデルでコレクションがいっぱいになります
ただし、データフィルターを追加しようとすると
userActions.fetch({data: $.param({collabList: true })})
Ruby on Rails サーバーで次のエラーが表示されます。
Processing by UserActionsController#index as JSON
Parameters: {"collabList"=>"true"}
Completed 500 Internal Server Error in 9214ms
ArgumentError (wrong number of arguments (0 for 1..2)):
app/models/user_action.rb:16:in `filter_by_params'
app/controllers/user_actions_controller.rb:14:in `index'
インデックスフェッチ用の私のコントローラーは次のとおりです。
def index
respond_with UserAction.filter_by_params(params)
end
filter_by_params の定義を含む私のモデル定義
class UserAction < ActiveRecord::Base
attr_accessible :action, :context, :itemID, :itemType, :userId, :userName, :userEmail
def self.filter_by_params(params)
scoped = self.scoped
if (params[:collabList])
scoped = scoped.uniq.pluck(:userName)
end
return scoped
end
end
コントローラーのインデックス メソッドで binding.pry をスタックし、userActions.fetch() を呼び出すと、params の値は次のようになります。
[1] pry(#<UserActionsController>)> params
=> {"action"=>"index", "controller"=>"user_actions"}
そして、私が続けるとすべてが機能します。
userActions.fetch({data: $.param({collabList: true })}) を呼び出すと、以下の params 値が表示されます。
12: def index
=> 13: binding.pry
14: respond_with UserAction.filter_by_params(params)
15: end
[1] pry(#<UserActionsController>)> params
=> {"collabList"=>"true", "action"=>"index", "controller"=>"user_actions"}
次を入力して14行目を処理すると、例外がスローされます
#<ArgumentError: wrong number of arguments (0 for 1..2)>
パラメータを間違って渡していますか?
params 変数が渡されない理由はありますか?
あなたが私に与えることができる助け/洞察をありがとう!