我有一个匹配的路由,/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"}。
我试图寻找一个原因,但没有找到原因,有人可以向我解释为什么会发生这种情况吗?