【问题标题】:Sinatra/Haml: How to execute Ruby code inside Javascript?Sinatra/Haml:如何在 Javascript 中执行 Ruby 代码?
【发布时间】:2011-10-01 14:23:04
【问题描述】:

我正在编写一个 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 代码被渲染为代码而不是被执行。

【问题讨论】:

    标签: javascript ruby sinatra haml


    【解决方案1】:

    看看这篇文章,也许会有所帮助。

    Ruby methods within Javascript within HAML

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:
        :javascript
          $(function() {
            #{- @persons.each do |person|}
              $("##{person.id}").attr("style", "#{person.style}");
          });
        

        【讨论】:

        • 我在尝试此操作时收到“语法错误,意外 tSTRING_DEND”。有什么技巧吗?
        • 对不起.. 不记得当时我的思考过程是什么.. 现在,我可能只是尝试找到一种不同的方法来完成它,因为这种方法很漂亮凌乱且难以维护
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-03-10
        • 1970-01-01
        • 1970-01-01
        • 2015-06-06
        • 1970-01-01
        • 2012-02-26
        • 2011-12-31
        相关资源
        最近更新 更多