如何使用 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
函数在rails这边。您不希望它出现在输出中,所以它会在 #{}
.
范围内
而且你扔掉了大部分引语。仍然需要那些。
希望没有错别字,但直接翻译应该更像这样:
-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 东西时,使用 escape_javascript
的 j
别名会更简洁,这也有助于缩小语法问题的范围:
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})}");
...开始看起来更具可读性。
<% 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
函数在rails这边。您不希望它出现在输出中,所以它会在 #{}
.
而且你扔掉了大部分引语。仍然需要那些。
希望没有错别字,但直接翻译应该更像这样:
-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 东西时,使用 escape_javascript
的 j
别名会更简洁,这也有助于缩小语法问题的范围:
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})}");
...开始看起来更具可读性。