Rails:根据数据库中的值运行脚本

时间:2012-11-04 00:21:22

标签: javascript ruby-on-rails

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

根据数据库中的值有条件地触发JavaScript的概念上最好的方法是什么?我在使用JavaScript和Rails进行通信方面遇到了一些麻烦。

3 个答案:

答案 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”以确定用户是否启用了高级工具提示。

这是一个混乱的解决方案(上面列出的那些实际上更好),但由于我有一些非常严格的限制,因为我跳到别人的项目中期完成,这是我必须做的。

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