从Rails guide学习,我不明白public class Example {
private String last_question;
private String level;
private String error;
//all getter andd setter are is here
}
如何在下面工作:
要仅在特定情况下将局部变量传递给局部变量,请使用 local_assigns。
index.html.erb
local_assign
show.html.erb
<%= render user.articles %>
_articles.html.erb
<%= render article, full: true %>
这样就可以在不需要声明的情况下使用partial 所有局部变量。
当show动作名称为<h2><%= article.title %></h2>
<% if local_assigns[:full] %>
<%= simple_format article.body %>
<% else %>
<%= truncate article.body %>
<% end %>
时,部分甚至会被show动作呈现,只显示索引动作?当您刚刚使用_articles
时,我也不明白为什么使用添加full: true
选项的原因。有什么区别?
答案 0 :(得分:5)
关于struct _list_cell_t
的使用:
本指南的这一部分旨在说明如何访问部分中的可选本地人。如果局部变量名local_assigns
可能或可能不在您的部分内部定义,则只需访问full
将导致在未定义本地时出错。
可选本地人有两种选择:
首先,使用full
,在未提供指定的本地时为local_assigns[:variable_name]
,或变量的值。
其次,当未定义变量时,您可以使用nil
,当本地 时,可以使用真实(字符串defined?(variable_name)
)定义
使用nil
只是防止访问未定义的变量,您仍然必须访问变量才能获取其值:
"local_variable"
defined?
至于你的具体问题:
当show动作的名称为_articles时,部分甚至是如何呈现的,这只会显示索引动作?
This is a typo。正确的部分名称是if local_assigns[:full]
。无论操作if defined?(full) && full
或_article.html.erb
如何,正确的部分名称都是模型的单数。在渲染模型集合的情况下(如在index.html.erb中),部分仍应单独命名。
当您刚刚使用
index
时,我也不明白为什么使用添加show
选项的原因。有什么区别?
重点是full: true
语法更短。您有两个相同的选项:
locals: {full:true}
或full: true
。第二个明显更短,更少冗余。