0

Ruby 2.1.1 では、次のメソッドを定義しました。

def post(url, params={}, send_json: false, success_only: true)

privateTokenこれは、次のように別のメソッドの同じオブジェクト内で呼び出されます。

    self.post("#{@url}/api/v3/session", {
        :login    => @user,
        :password => @pass,
    })['private_token']

ただし、このオブジェクトを呼び出すprivateTokenと、次のようになります。initialize

<script>:207:in `privateToken': unknown keywords: login, password (ArgumentError)
    from <script>:199:in `initialize'
    from <script>:575:in `new'
    from <script>:575:in `<main>'

メソッドをキーワード引数としてpost受け入れるように変更すると、このエラーは回避されます。params

def post(url, params: {}, send_json: false, success_only: true)

# ..then in method 'privateToken':
self.post("#{@url}/api/v3/session", params: {
   :login    => @user,
   :password => @pass,
})['private_token']

誰かがなぜこれが起こるのか説明してもらえますか? キーワード引数のドキュメントで、キーワードへのハッシュ拡張についての言及を見たことがありません。そして、私が読んだことから、引数の順序は次のようになるはずです:標準引数、デフォルト引数、キーワード引数。

4

1 に答える 1

0

試す

def post(url, send_json: false, success_only: true, **params)

この回答を参照してください https://stackoverflow.com/a/20633975/1285164

今、あなたは呼び出すことができます

self.post("#{@url}/api/v3/session", login: @user, password: @pass)

于 2015-04-13T19:11:01.957 に答える