Использование логического выражения из JSON для оператора if - PullRequest
0 голосов
/ 31 октября 2019

У меня есть переменная, равная true, но, похоже, что это из JSON, это не "на самом деле" true.

Это не работает:

<% sppf = Model.exists?(foo_id: foo.id) %>
#this translates to: true
#in the view-source

<script>
var sppf_boolean = <%= sppf.to_json.html_safe %>;
#this translates to: var sppf_boolean = true;
function loadJSONImage() {
  if (sppf_boolean)
  {
     #codey
  };
};
</script>

Пробовалудалить to_json.html_safe, но это не помогло. Также пробовал это с комбинацией (sppf_boolean === true) и (sppf_boolean == true)

Это работает:

<script>
var sppf_boolean = true;
function loadJSONImage() {
  if (sppf_boolean)
  {
     #codey
  };
};
</script>

В исходном коде это показывает true (или false). Есть ли какая-то разница с истинным / ложным, исходящим из синтаксиса ruby?

Я не вижу причин, почему это не сработает. Как я могу заставить это работать?

1 Ответ

0 голосов
/ 31 октября 2019

Это должно работать, но чтобы быть уверенным, добавьте консольный журнал. Кроме того, если вы ожидаете, что ваша функция будет вызвана, ну, может, вызвать ее? ОБНОВЛЕНИЕ: используйте замыкание, чтобы убедиться, что имена переменных не загрязнены в глобальной области видимости.

<script>
(function(){
  var sppf_boolean = <%= Model.exists?(foo_id: foo.id) %>;
  console.log(sppf_boolean);
  function loadJSONImage() {
    if (sppf_boolean)
    {
       #codey
    }
  }
  // but we have not called the function yet.  Should we? if so:
  loadJSONImage();    
}();
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...