0

ERBファイルをHAMLに置き換えました。これはうまく機能します。ただし、javascriptとerbの複雑な混合コードがあり、hamlに変換すると失敗します。hamlをバイパスする「:plain」オプションについては知っていますが、以下のコードでこれを行うと、erbコードはテキストとして出力されるだけで、解釈されません。何か解決策はありますか?

JSでERBのHAMLへの置き換えが失敗する

  - if (@active == "tasks")
    :plain
      $('#content_output').html("<div class='content_title task'></div><h3><%= I18n.t :task_all %></h3><%= escape_javascript(render('tasks/all_tasks', :tasks => @contact_tasks, :layout => 'normal')) %></div>");
      $('#content_input').html("<div class='content_title task'></div><h3><%= I18n.t :task_new_title %></h3><%= escape_javascript(render('tasks/new_task')) %></div>");
      $('a#tasks_tab').addClass('active');

これは元のjs.erbコードです。

    <% if (@active == "tasks") %>
        $('#content_output').html("<div class='content_title task'></div><h3><%= I18n.t :task_all %></h3><%= escape_javascript(render('tasks/all_tasks', :tasks => @contact_tasks, :layout => 'normal')) %></div>");
        $('#content_input').html("<div class='content_title task'></div><h3><%= I18n.t :task_new_title %></h3><%= escape_javascript(render('tasks/new_task')) %></div>");
        $('a#tasks_tab').addClass('active');
    <% end %>
4

2 に答える 2

1

ファイルの拡張子がjs.hamlであると仮定すると、必要なのは<%= ... %>タグを標準の文字列補間タグに変更することだけだと思い#{ ... }ます。

- if (@active == "tasks")
  :plain
    $('#content_output').html("<div class='content_title task'></div><h3>#{I18n.t :task_all}</h3>#{escape_javascript(render('tasks/all_tasks', :tasks => @contact_tasks, :layout => 'normal'))}</div>");
    $('#content_input').html("<div class='content_title task'></div><h3>#{I18n.t :task_new_title}</h3>#{escape_javascript(render('tasks/new_task'))}</div>");
    $('a#tasks_tab').addClass('active'); 
于 2012-08-07T10:09:26.093 に答える
0

:javascript代わりに使用してみてください:plain

ところで、Rails 3では、控えめなJavaScript(UJS)を使用する必要があります。いくつかのチュートリアルをチェックしてください:http://railscasts.com/episodes/205-unobtrusive-javascript

于 2012-08-07T08:17:25.907 に答える