Доступ к логическому значению переменной Ruby в `application.js` - PullRequest
0 голосов
/ 10 февраля 2012

У меня есть div, который я спрятал, когда пользователь щелкает ссылку и показывает, когда он щелкает ее снова.Мы хотим, чтобы div было свернуто, когда пользователь вернется, если он решит скрыть его, поэтому мы добавили логический столбец hide_todo в нашу базу данных пользователей, и я добавил метод для проверки значения в user_controller.Скрытие выполняется с помощью jQuery, и мы хотим изменить значение hide_todo на true, если пользователь нажимает Hide, и false, когда пользователь нажимает Show.Как мне получить доступ к переменной Ruby в application.js?

Ответы [ 2 ]

2 голосов
/ 10 февраля 2012

Существует 3 способа доступа к переменным ruby ​​в js:

A) Если вы используете rails 3.1+ с конвейером ресурсов, вы можете добавить расширение .erb к файлу, например: «application.js.erb». Теперь вы можете использовать теги erb внутри .js <% ruby.code (); %> Это, я бы сказал, странный способ сделать это, и это имело бы смысл только в особых случаях.

B) Обычно вы добавляете необходимые данные в DOM вашего HTML-документа и извлекаете данные из него.

Например, в вашем шаблоне erb (или аналогично в haml) сделайте вот что:

<div id="collapsable" data-show="<%= model.hide.todo%>"> </div>

теперь в jQuery вы можете получить доступ к данным следующим образом:

hide_todo = $("#collapsable").data("show");

C) Другим способом является вызов ajax, который вернет данные из приложения rails.

В вашем случае я рекомендую 2-й метод.

0 голосов
/ 11 февраля 2012

Что ж, в итоге мы использовали $.get('toggle_hide');, добавив метод к контроллеру для переключения логического значения и сопоставив его с ресурсами в route.rb. Спасибо за предложения, хотя!

...