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,它会选择哪个版本的变量?
答案
控制器中的每个动作(show
和new
)都对应并呈现具有相同名称的视图。所以,你在控制器中的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 脚本变量?