1

我是 HAML 新手,无法理解旧的编码器逻辑我尝试识别标签在 HAML 模板中出现在 UI 上的位置这是我的代码主视图页面

  = render :partial => "application/select_search", :locals => {:n => "benefit_stream_inf", :options => @dynamic_benefit_options, :default => true}

在主页面中呈现的 select_search 页面

label = local_assigns[:l] ? l : t(n, :scope => local_assigns[:s] ? s : :models)

现在我没有在渲染中给出任何标签那么标签是如何生成的

有人能解释一下这个标签分配代码吗

label = local_assigns[:l] ? l : t(n, :scope => local_assigns[:s] ? s : :models)
4

2 回答 2

0

如果你看到下面的声明

label = local_assigns[:l] ? l : t(n, :scope => local_assigns[:s] ? s : :models)

使用的运算符是三元运算符

表示标签可以是"l"t(n, :scope => local_assigns[:s] ? s : :models)

通过看到这个

  = render :partial => "application/select_search", :locals => {:n => "benefit_stream_inf", :options => @dynamic_benefit_options, :default => true}

我们可以说local_assigns[:l]will returnfalse意味着它会落入第二个选项,即t(n, :scope => local_assigns[:s] ? s : :models).

t(n, :scope => local_assigns[:s] ? s : :models)

在上面的语句 n = "benefit_stream_inf"scope后面我们有三元运算符,local_assigns[:s]它将返回false意味着最终label变量将被分配t("benefit_stream_inf", :scope => :models)

如果您在项目models哈希中看到 en.yml,其中包含 'benefit_stream_inf' key一些,value 则此值将分配给标签变量,有关国际化的更多信息,您可以查看此链接

我希望它会有所帮助。

于 2013-09-04T05:42:48.410 回答
0

终于,我得到了答案

label = local_assigns[:l] ? l : t(n, :scope => local_assigns[:s] ? s : :models)

local_assigns[:l] 是一个局部变量,用于直接给出标签

t(n, :scope => local_assigns[:s] ? s : :models)这用于通过密钥和范围获取翻译文件的标签值

和翻译文件将放在 config/local/en.yml

于 2013-09-04T05:36:44.040 回答