簡體   English   中英

如何使用haml將內嵌的ruby對象正確格式化為rails中的jquery選擇器?

[英]How do I properly format interpolated ruby objects as jquery selectors in rails, using haml?

<% if @discussion_category %>
 $("#<%= dom_id(@discussion_category) %>_notice").html('');
 $("#<%= dom_id(@discussion_category) %>").html("<%=escape_javascript(render(partial: 'display_change', locals: {discussion_category: @discussion_category}))%>");
 $('#discussion_category_links').show();
<% end %>

我做了以下事情,但是做錯了什么:

-if @discussion_category
  javascript:
    $(escape_javascript(#{dom_id(@discussion_category)} + '_notice').html('');
    $(escape_javascript(#{dom_id(@discussion_category)}).html(#{escape_javascript(render(partial: 'display_change', locals: {discussion_category: @discussion_category}))});
    $('#discussion_category_links').show();

我在這里做錯了什么?

escape_javascript函數位於軌道一側。 您不希望它出現在輸出中,因此它會在#{}

然后您刪除了大多數引號。 還需要那些。

希望沒有錯別字,但直接翻譯應該更像這樣:

-if @discussion_category
  javascript:
    $("#{escape_javascript(dom_id(@discussion_category))}_notice").html('');
    $("#{escape_javascript(dom_id(@discussion_category))}")
      .html("#{escape_javascript(render(partial: 'display_change', locals: {discussion_category: @discussion_category}))}");
    $('#discussion_category_links').show();

當構建像這樣的凌亂的RJS東西時,使用j別名作為escape_javascript會更干凈,這也將有助於縮小語法問題:

javascript:
  $("#{j dom_id(@discussion_category)}_notice").html('');
  $("#{j dom_id(@discussion_category)}")
    .html("#{j render(partial: 'display_change', locals: {discussion_category: @discussion_category})}");

最后,可能沒有理由逃避dom_id的輸出,這意味着您可以:

javascript:
  $("#{dom_id @discussion_category}_notice").html('');
  $("#{dom_id @discussion_category}")
    .html("#{j render(partial: 'display_change', locals: {discussion_category: @discussion_category})}");

...開始看起來更具可讀性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM