Railsで非同期処理のテストをしようとしたところ、google先生を頼りに
railsuRuby
xhr :patch, race_path(@race), race: { nickname: new_name }
と書いたら、
DEPRECATION WARNING: `xhr` and `xml_http_request` are deprecated and will be removed in Rails 5.1.
Switch to e.g. `post comments_path, params: { comment: { body: 'Honey bunny' } }, xhr: true`.
とか怒られたので、言われるがままに
patch race_path(@race), params: { race: { nickname: new_name } }、:xhr => true
としてみたところ、テストが通るようになった。
でも、これでは黒魔術っぽいので、
patch( race_path(@race), {'xhr' => true, 'params' => { 'race' => { 'nickname' => new_name } } } )
とか書くと余計解り辛い?
patchメソッドに渡す引数は二つ、URLとHashの二つ、URLはrace_path(@race) => /race/
で、Hashはhash => {:xhr,:params}
から構成されていている。
Hashの最初の項目、xhrのtrueは一目瞭然。
次のparamsと言うHashはraceと言うHashを持っていって、raceというHashはnickname: new_name
という構成になってすよと。
解り辛ぇ(^^;
xhrを最初に持ってきたら、なんか読みやすくなった気はするれど、Hashの階層深くね?