现在,我有一些工具提示JavaScript,我想在我的应用的每个页面上运行,但前提是当前用户的模型在我的数据库中将User.advanced_tooltips设置为true。
根据数据库中的值有条件地触发JavaScript的概念上最好的方法是什么?我在使用JavaScript和Rails进行通信方面遇到了一些麻烦。
答案 0 :(得分:1)
你可以做这样的事情,假设你使用的是jquery:
<script type='text/javascript'>
$(document).ready(function() {
var advtt = '<%= @user.advanced_tooltips ? "yes" : "no" %>';
if ( advtt == 'yes')
# ?? add css, or whatever
});
</script>
这假设在渲染包含上述Javascript的视图之前,在控制器中设置了@user。
答案 1 :(得分:1)
一个干净而简单的解决方案是将javascript函数包装在rails逻辑中:
<script type='text/javascript'>
var setupTooltips = function() {
// do something here
}
$(document).ready(function() {
<% if current_user.advanced_tooltips %>
setupTooltips();
<% end %>
});
</script>
答案 2 :(得分:0)
这是我最终使用的解决方案(考虑到这个项目施加的非常奇怪的限制):
首先,我设置一个控制器路由,找到当前用户,然后将其advanced_tooltip值呈现为文本。
然后,在我的application.js中,我使用$ .get对该路由进行了AJAX调用,然后检查结果是否=“true”以确定用户是否启用了高级工具提示。
这是一个混乱的解决方案(上面列出的那些实际上更好),但由于我有一些非常严格的限制,因为我跳到别人的项目中期完成,这是我必须做的。
仍然给出了两个评论,因为它们是有效的,并且在正常情况下完全可以正常工作。