【问题标题】:Trouble passing ruby to javascript (jquery)将 ruby​​ 传递给 javascript (jquery) 时遇到问题
【发布时间】:2012-03-07 19:30:55
【问题描述】:

我在 Rails 2.3 中将 ruby​​ 数组传递给 jquery 时遇到问题。将 ruby​​ 数据传递给 jquery 的最佳实践是什么?下面我尝试编写一些响应 Rails 控制器和控制器操作的 jquery。

  <% action_array = [params[:controller], params[:action]] %>

    <script type="text/javascript">

    $(document).ready( function() { 

      var path =  <%= action_array.to_json %>;

        if ( path[0] == "home" ) {
    $('.home').addClass('gradientBGRed');
}

});

    </script>

</head>

<body>

<ul id="headerNav" class="gradientBG">
<li class="home "><a href="/">Home </a></li>
<% if logged_in? %>
  <li class="register "><a href="/account">Account </a></li>
 <li class="login last"><a href="<%= logout_path %>">log out </a></li>
  <% else %>
  <li class="register "><a href="/customers/new">register </a></li>
    <li class="login last "><a href="<%= login_path %>">log in </a></li>
<% end %>
</ul>

【问题讨论】:

  • 看看 RailsCast 关于Passing data to JavaScript ;)
  • 你试过 var path = "";或 var path = "#{action_array.to_json}";
  • @Raghu:这不是必需的,因为 to_json 方法已经包含引号以使其工作

标签: javascript jquery ruby-on-rails ruby ruby-on-rails-2


【解决方案1】:

你的选择器有问题

$('.home').addClass('gradientBGRed');

点很重要,因为它是您要搜索的类

【讨论】:

  • 抱歉错字,但即使使用 $('.home') 选择器也不起作用
  • 嗯,试试$(document).ready( function() { 而不是$(document).ready( function {
  • Ok $(document).ready( function() { 解决了第一个问题,我现在可以在花括号内执行 jquery (即 alert("HEY!") 有效等),但仍然不行添加类。
  • 哪个花括号?函数的那些还是 if 的那些?
  • 其实没关系。它在更正为 function() 后工作。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-31
  • 2010-11-05
  • 1970-01-01
相关资源
最近更新 更多