【发布时间】:2013-01-09 15:34:11
【问题描述】:
我有一个匹配 /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"}。
我试图寻找一个原因,但没有找到原因,有人可以向我解释为什么会发生这种情况吗?
【问题讨论】:
标签: ruby-on-rails controller ruby-on-rails-3.2