我有一个匹配的路由,/edit_account => accounts#edit
因为没有提供帐户 ID,它应该使用当前用户 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"}
。
我试图寻找一个原因,但没有找到原因,有人可以向我解释为什么会发生这种情况吗?