Sinatra / Haml:如何在Javascript中执行Ruby代码?

时间:2011-07-08 20:44:26

标签: javascript ruby sinatra haml

我正在编写一个Sinatra + Haml应用程序,在我的Javascript代码中,我想要执行一些Ruby。在erb中,以下工作:

<script type="text/javascript"> 
  $(function() {
    <% @persons.each do |person| %>
        $("#<%= person.id %>").attr("style", "<%= person.style %>");
    <% end %>
  });
</script>

但是我怎么用Haml写这个呢?我试过像

这样的东西
:javascript
  $(function() {
    - @persons.each do |person|
      $("##{person.id}").attr("style", "#{person.style}");
  });

但是Ruby代码被渲染为代码而不是被执行。

3 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。基本的字符串插值似乎有效,但并不复杂。我采用的是:

-v = "##{person.id}").attr("style", "#{person.style}"
:javascript
  $(function() {
    - @persons.each do |person|
      $(#{v});
  });

答案 1 :(得分:1)

:javascript
  $(function() {
    #{- @persons.each do |person|}
      $("##{person.id}").attr("style", "#{person.style}");
  });

答案 2 :(得分:0)

看一下这篇文章,也许这可能会有所帮助。

Ruby methods within Javascript within HAML