アカウント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"}。
私は理由を探そうとしましたが、不足しています。誰かが私にこれが起こっている理由を説明できますか?