gpt4 book ai didi

ruby-on-rails - 将 Controller 中的 url params hash 传递给另一个方法,变为 nil

转载 作者:行者123 更新时间:2023-12-04 03:55:29 29 4
gpt4 key购买 nike

我有一个匹配 /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 ".

我试图寻找原因,但没有找到答案,有人可以向我解释为什么会这样吗?

最佳答案

你试过吗

class AccountController < ApplicationController
...
def edit

retrieve_id_if_missing


end

def retrieve_id_if_missing()
if params[:id].nil? and !logged_in?
redirect_to root_path
else params[:id].nil?
params[:id] = current_user.id
end
params
end
end

我相当确定参数将在该方法的范围内。

无论如何,请检查一下 gem devise。它应该有你想要的一切,甚至更多

有了设计你就可以使用

before_filer :authenticate_user!

在 Controller 的顶部

https://github.com/plataformatec/devise

关于ruby-on-rails - 将 Controller 中的 url params hash 传递给另一个方法,变为 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14525734/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com