rails如何选择要呈现的实例变量版本?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rails如何选择要呈现的实例变量版本?相关的知识,希望对你有一定的参考价值。

我对rails很新,我试图理解为什么rails选择一个实例变量版本而不是另一个版本。

在控制器中,我定义了实例变量。

def show
    @discussions = Discussion.all.order('created_at desc')
  end

 def new
    @discussion = current_user.discussions.build
  end

如果我在我的一个视图中调用@discussion,它会选择哪个版本的变量?

答案

控制器中的每个动作(shownew)都对应并呈现具有相同名称的视图。所以,你在控制器中的show方法渲染app/views/controller_name/show.html.erb,除非你明确地调用render告诉它。

show.html.erb唯一可用的实例变量是控制器的show动作中定义的变量。其他行动也是如此。

另一答案

我也是铁杆新手,但是让我采取行动。我认为在这两种情况下,@ discussion将是同一个东西,它被分配给它。因此,在您的代码片段中,如果您对/ controller_route / new进行GET调用,它将向您显示您的预期 - current_user.discussions.build

如果你对/controller_route进行GET调用,它将是nil,因为你还没有定义它。 @discussions与评估无关。

但这又是我的猜测;很高兴接受教育/纠正。

以上是关于rails如何选择要呈现的实例变量版本?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Rails ERB 文件的渲染部分 url 中访问 java 脚本变量?

来自 application.html.erb 的 Rails 渲染实例变量

如何使控制台中的视图缓存片段过期?

Rails + slim:选择标签上的数据属性未呈现

如何在 Rails 视图中呈现所有评论?

了解 Rails 控制器 - 通过关联模型的实例变量查看连接