我有一个Rails应用程序,它使用javascript(Backbone)在每个用户个人资料页面/views/users/show.html.erb上显示用户特定的数据。我通过将<%= @ user.id%>作为数据参数传递给Backbone的获取函数来实现这一点,但是,我知道如何获取Backbone的获取函数的唯一方法是嵌入每个views/users/show.html.erb页面中的javascript,因此允许Backbone为每个views/users/show.html.erb页面加载不同的用户特定信息。虽然这有效,但它看起来是错误的做法,因为我已经读过,我不应该像这样嵌入JavaScript。此外,我将不得不做很多事情,因为我希望展示大量不同类型的数据,而不仅仅是你看到的。所以show.html.erb页面将被填充javascript以使应用程序以我希望的方式工作。如何避免在视图中嵌入javascript /显示
问题:如何将@ user.id变成每个用户的显示页面的Backbone的fetch函数,而不用像我所做的那样嵌入javascript。在评论中,有人建议我使用app/assets/javascripts/user.js,但我不知道如何将<%= @ user.id%>加入该文件。 @ user.id是show.html.erb一应俱全
<script type='text/javascript'>
$(document).ready(function() {
app.collections.awardCollection.fetch({ data: $.param({ user_id: <%= @user.id %> }) }).complete(function(){
app.views.awardCollection = new app.Views.awardCollection({ collection : app.collections.awardCollection});
app.views.awardCollection.render()
});
});
</script>
您应该在'app/assets/javascripts/user.js'上添加javascript –
但是如何将<%= user.id%>加入该文件?我按照你在OP中看到的方式做到了,因为我在views/show.html.erb中提供了@ user.id –
看看[gon](https://github.com/gazay/gon)是否有用。 “如果你需要发送一些数据到你的js文件中,并且你不想通过视图和解析来完成这个任务 - 使用这个力量!” –