我可以为 javascript 块创建 ViewHelper 吗?

Can I create a ViewHelper for a javascript-block?

我正在清理 Rails-app 的代码。我正在使用 Raty-gem 作为我的评级系统。为了呈现 #average_rating,我在特定视图中使用了脚本块(在某些教程中选择了它)。但由于我在超过 6 个不同的视图中使用 #average_rating,我希望我可以更有效地做到这一点。我已经尝试为其使用 HelperMethod,但我猜它不接受 'javascript'.

脚本块:

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

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

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

<% 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

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