首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在rails中使用haml正确地将插值的ruby对象格式化为jquery选择器?

如何在rails中使用haml正确地将插值的ruby对象格式化为jquery选择器?
EN

Stack Overflow用户
提问于 2015-03-10 19:55:26
回答 1查看 693关注 0票数 0
代码语言:javascript
复制
<% 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 %>

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

代码语言: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();

我在这里做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-10 20:04:13

escape_javascript函数位于rails端。您不希望它出现在输出中,所以它将在#{}中。

你把大部分的引号都扔掉了。还需要这些。

希望没有排字,但直接翻译应该更像这样:

代码语言: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
复制
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
复制
javascript:
  $("#{dom_id @discussion_category}_notice").html('');
  $("#{dom_id @discussion_category}")
    .html("#{j render(partial: 'display_change', locals: {discussion_category: @discussion_category})}");

..。开始看起来更加可读性了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28972935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档