gpt4 book ai didi

javascript - 为什么 Ruby 包含在内?函数无法按 AngularJS 变量的预期工作?

转载 作者:行者123 更新时间:2023-11-28 12:13:41 25 4
gpt4 key购买 nike

在我的 Ruby on Rails 应用程序的 haml 中,我尝试通过 AngularJS 的 ng-repeat 来访问数组,并且仅显示该数组中包含在另一个数组中的字符串。我试图借助 Ruby 的 include? 函数来实现此目的,以了解每个字符串是否在我的其他数组中,但即使该字符串在我的其他数组中,它也会返回 false。

这是我调试此问题的代码(在评论中包含我的“真实”代码):

 %span.badge{"ng-repeat" => "competence_name in mymodel.get_competence_names track by $index"}
= "{{competence_name}}"
= current_user.get_competence_names
= current_user.get_competence_names.include?("{{competence_name}}")
-#- if current_user.get_competence_names.include?("{{competence_name}}")
-#= "{{ competence_name }}"

此代码显示:

Challenger ["Challenger", "Creative", "Innovative", "Results-oriented"] false

请注意,行尾包括?应该返回 true 而不是 false,因为“Challenger”包含在数组中。

但是如果我替换这一行:

= current_user.get_competence_names.include?("{{competence_name}}")

通过这一行:

= current_user.get_competence_names.include?("Challenger")

它显示true而不是false

所以我认为这是一个类型问题,并且 Ruby 没有将 "{{ency_name }}" 解释为 String。所以我尝试用 String.new("{{ency_name }}") 替换 "{{ency_name }}" 但它仍然返回 false...

您知道问题的根源吗?

最佳答案

Do you have any idea of the source of the problem?

是的。当 ruby​​ 运行时,Angular 尚未引导,没有机会处理绑定(bind)。这意味着字符串 "{{competence_name}}" 就是一个文字字符串 "{{competence_name}}"。当然,它不在列表中。

同样,当JS运行时,Ruby代码也早已完成。事实上,那里根本没有 ruby​​ 代码(在 JS 运行的上下文中)。

客户端和服务器端不能混合使用。

关于javascript - 为什么 Ruby 包含在内?函数无法按 AngularJS 变量的预期工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54784816/

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