为什么Ruby包含?功能与AngularJS变量无法正常工作?

Yoa*_*nGJ 0 javascript ruby ruby-on-rails angularjs

在我的Ruby on Rails应用程序的haml中,我试图通过AngularJS获取数组,ng-repeat并且只显示包含在另一个数组中的此数组的字符串.我试图在include?Ruby 的功能的帮助下实现这一点,以了解每个字符串是否在我的另一个数组中,但即使字符串在我的其他数组中,它也会返回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 }}"
Run Code Online (Sandbox Code Playgroud)

此代码显示:

Challenger ["Challenger", "Creative", "Innovative", "Results-oriented"] false
Run Code Online (Sandbox Code Playgroud)

注意,在行的末尾包括?应该返回true而不是false"挑战者"包含在数组中.

但如果我更换这一行:

= current_user.get_competence_names.include?("{{competence_name}}")
Run Code Online (Sandbox Code Playgroud)

通过这条线:

= current_user.get_competence_names.include?("Challenger")
Run Code Online (Sandbox Code Playgroud)

它显示true而不是false

所以我认为这是一个类型问题,"{{ competence_name }}"并没有String被Ruby 解释为.所以我试图替换"{{ competence_name }}",String.new("{{ competence_name }}")但它仍然返回假...

你知道问题的根源吗?

Ser*_*sev 6

你知道问题的根源吗?

是.当ruby运行时,角度尚未自举,并且没有机会处理绑定.这意味着字符串"{{competence_name}}"就是一个文字字符串"{{competence_name}}".当然,它不在列表中.

同样,当JS运行时,ruby代码很快完成.实际上,根本没有ruby代码(在JS运行的上下文中).

客户端和服务器端不混合.