アカウントIDが提供されていないため、一致するルートがあります。/edit_account => accounts#edit
これは、現在のユーザーIDを使用することになっており、account#edit
メソッドはと共有されてい/accounts/[:id]/edit
ます。
class AccountController < ApplicationController
...
def edit
# This doesn't work:
params = retrieve_id_if_missing(params)
# This works:
# aHash = params
# params = retrieve_id_if_missing(aHash)
end
def retrieve_id_if_missing(params)
# raise params.inpect => returns nil at this point
if params[:id].nil? and !logged_in?
redirect_to root_path
else params[:id].nil?
params[:id] = current_user.id
end
params
end
end
私が抱えている問題はparams
、クラスメソッドに渡されるとretrieve_id_if_missing
、がになっていることnil
です。ただし、params
別の変数に割り当てると。たとえば、aHash
渡す前にretrieve_id_if_missing
、期待されるデータが含まれます{"action" => "edit", "controller" => "account"}
。
私は理由を探そうとしましたが、不足しています。誰かが私にこれが起こっている理由を説明できますか?