gpt4 book ai didi

ruby-on-rails - 为什么在 html.erb 中未声明的@variables nil 而不是 NameError

转载 作者:数据小太阳 更新时间:2023-10-29 07:52:39 25 4
gpt4 key购买 nike

如果 html.erb 文件呈现时没有 Controller 中分配的变量(例如 @user = params["user_name"] )那么为什么它将 @user 视为 nil 而不是抛出 NameError: undefined local variable

例如:

<%= render partial: "greeting", locals: { user: @user } if @user %>

如果 Controller 将 @user 传递给它,这将呈现问候语,但如果页面是第一次呈现并且用户尚未输入他们的用户名,那么问候语将不会在那里,而不是导致错误。在我看来,@user 永远不会在 html.erb 正在执行的本地范围内声明,因此它应该会导致错误。

这里发生了什么?也许 @ 以某种方式进行了预处理,意味着将变量视为符号并将其用作 params 哈希中的键并返回结果?

最佳答案

未初始化的实例变量 (@...) 的计算结果为 nil。您仍然可以使用 defined? 方法检查实例变量是否已分配(包括分配给 nil):

[1] pry(main)> defined? @test
=> nil
[2] pry(main)> @test = nil
=> nil
[3] pry(main)> defined? @test
=> "instance-variable"

关于ruby-on-rails - 为什么在 html.erb 中未声明的@variables nil 而不是 NameError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25196482/

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