【问题标题】:How to render ruby code inside Coffescript .js.coffee如何在 Coffescript .js.coffee 中渲染 ruby​​ 代码
【发布时间】:2014-04-26 20:53:30
【问题描述】:

单击选择列表时,我尝试渲染部分内容。

为什么这会毫无问题地渲染部分文件:

用户/index.html:

 <%= select_tag :priority, options_for_select([['low'],
                                               ['normal'],
                                               ['high'],
                                               ['critical']]),             
                data: {form: escape_javascript(render(:partial => "my_partial_file"))}
 
 %>

<div id="div_teste">
    CHANGE IT!
</div>

资产/javascript/user.js:

$ ->
    $('#priority').change ->
        $('#div_test').html($('#priority').data('form'))

但如果我尝试这段代码:

$ ->
    $('#priority').change ->
        my_data = "<%= j render my_partial_file %>"
        $('#div_test').html(my_data)

它只渲染纯文本而不是部分文件:

【问题讨论】:

    标签: javascript jquery ruby-on-rails ruby coffeescript


    【解决方案1】:

    每个页面请求都会呈现您的索引页面。您的资产会被渲染一次,可能会提前。将请求数据放入资产是没有意义的。

    如果您想将应用程序中的数据提供给您的预处理咖啡/javascript,请使用data attributes

    这是RailsCast on the topic

    【讨论】:

    • 虽然我同意 Nick 的观点,但如果您需要在 JS 文件中使用 ERB,您可以添加 erb 扩展名,然后您可以在其中使用 ERB 标签。例如,您的 user.js 将是 user.js.coffee.erb 请参阅 guides.rubyonrails.org/asset_pipeline.html 2.3.3 JavaScript/CoffeeScript 和 ERB
    • 我从来没有这样做过,我认为这仍然会将 ERB 的使用限制为无需任何请求或状态即可调用的方法,对吧?像 URL 助手之类的东西?或者可以在每个请求上调用资产管道吗?这似乎是一个非常糟糕的主意。
    • 只有当我不得不在 JS 中使用 rails url helper 时,我才使用了几次。其他用例可能是在 JS 中使用应用程序范围的配置。在开发模式下没关系。在生产模式下,只有在您预编译资产时才会对其进行评估,因此无论如何都会限制它的使用。
    猜你喜欢
    • 2012-11-18
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 2020-03-02
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    相关资源
    最近更新 更多