0

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 変数が渡されない理由はありますか?

あなたが私に与えることができる助け/洞察をありがとう!

4

1 に答える 1

0

Railsサーバーを再起動すると修正されました。

于 2013-08-22T20:16:23.243 に答える