<% 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();我在这里做错什么了?
发布于 2015-03-10 20:04:13
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时,使用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})}");..。开始看起来更加可读性了。
https://stackoverflow.com/questions/28972935
复制相似问题