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 }}")但它仍然返回假...
你知道问题的根源吗?
你知道问题的根源吗?
是.当ruby运行时,角度尚未自举,并且没有机会处理绑定.这意味着字符串"{{competence_name}}"就是一个文字字符串"{{competence_name}}".当然,它不在列表中.
同样,当JS运行时,ruby代码很快完成.实际上,根本没有ruby代码(在JS运行的上下文中).
客户端和服务器端不混合.