Почему Ruby включает?функция не работает должным образом с переменной AngularJS? - PullRequest
0 голосов
/ 20 февраля 2019

В хамле моего приложения Ruby on Rails я пытаюсь пройти через массив через 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 }}"

Этот код отображает:

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

Так что я подумал, что это проблема типа и что "{{ competence_name }}" не был интерпретирован как String Руби.Поэтому я попытался заменить "{{ competence_name }}" на String.new("{{ competence_name }}"), но он по-прежнему возвращает false ...

Есть ли у вас какие-либо идеи об источнике проблемы?

1 Ответ

0 голосов
/ 20 февраля 2019

Есть ли у вас какие-либо идеи об источнике проблемы?

Да.Когда работает ruby, angular еще не загружен и у него не было возможности обработать привязки.Это означает, что строка "{{competence_name}}" - это буквальная строка "{{competence_name}}".Конечно, его нет в списке.

Аналогично, когда запускается JS, код ruby ​​долго завершается.На самом деле там нет никакого кода ruby ​​(в контексте, где работает JS).

На стороне клиента и на стороне сервера не смешиваются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...