0

现在,我有一些我想在我的应用程序的每个页面上运行的工具提示 JavaScript,但前提是当前用户的模型在我的数据库中将 User.advanced_tooltips 设置为 true。

从概念上讲,让这个 JavaScript 根据数据库中的值有条件地触发的最佳方法是什么?我在让 JavaScript 和 Rails 进行通信时遇到了一些真正的麻烦。

4

3 回答 3

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。

于 2012-11-04T00:53:33.150 回答
1

一个干净简单的解决方案是将javascript函数包装在rails逻辑中:

<script type='text/javascript'>

  var setupTooltips = function() {
    // do something here
  }

  $(document).ready(function() {

    <% if current_user.advanced_tooltips %>
      setupTooltips();
    <% end %>

  });

</script>
于 2012-11-04T11:19:12.557 回答
0

这是我最终使用的解决方案(鉴于该项目施加的非常奇怪的限制):

首先,我设置了一个控制器路由来查找当前用户,然后将其 advanced_tooltip 值呈现为文本。

然后,在我的 application.js 中,我使用 $.get 对该路由进行了 AJAX 调用,然后检查结果是否 == "true" 以确定用户是否启用了高级工具提示。

这是一个混乱的解决方案(上面列出的实际上更好),但由于我在完成其他人的项目时遇到了一些非常严格的限制,所以我必须这样做。

仍然给予两个评论投票,因为它们是有效的并且在正常情况下完全可以工作。

于 2012-11-05T18:36:20.173 回答