【问题标题】:Can I create a ViewHelper for a javascript-block?我可以为 javascript 块创建 ViewHelper 吗?
【发布时间】:2016-02-28 02:55:28
【问题描述】:

我正在清理我的 Rails 应用程序代码。我将Raty-gem 用于我的评分系统。为了渲染#average_rating,我在特定视图中使用了一个脚本块(在一些教程中选择了这个)。但由于我在超过 6 种不同的视图中使用#average_rating,我希望我能更有效地做到这一点。我已经尝试过使用 HelperMethod,但我猜它不接受 'javascript'。

脚本块:

<script>
$('#average_rating').raty({
    path: '',
    readOnly: true,
    score: <%= @project.average_rating %>
});
</script>

在 Rails 中最简洁的方法是什么?

【问题讨论】:

    标签: javascript ruby-on-rails-4 view-helpers raty


    【解决方案1】:

    是的,使用 rails 提供的 content_for 辅助方法定义 JavaScript 块有更简洁的方法。您可以在名为content_for 的块内定义代码 sn-p,并且可以在视图中的任何位置使用。 例如

    <% content_for :rating_code do %>
      $('#average_rating').raty({
        path: '',
        readOnly: true,
        score: <%= @project.average_rating %>
      });
    <% end %>
    

    在此处查看文档:http://apidock.com/rails/ActionView/Helpers/CaptureHelper/content_for

    【讨论】:

    • 好的,看起来很简单。但是我应该把这段代码放在哪里:在一个辅助方法中? (它似乎包含视图代码)或其他地方?
    • 您可以在app/views/layouts/application.html.erb 文件中定义标签的内容并在任何视图中对其进行初始化。该代码将仅在您生成代码的页面中生成&lt;%= yield(:code_tag_name) %&gt;
    【解决方案2】:

    如果你有很多数据要传递给 JavaScript,并且你想把你的 js 代码保存在 js 文件中,你可以使用the Gon gem

    【讨论】:

      猜你喜欢
      • 2021-06-10
      • 1970-01-01
      • 2011-05-16
      • 2014-08-15
      • 2013-08-13
      • 1970-01-01
      • 2021-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多