2014-02-18 17 views
1

我呈现的部分,我认为是这样的:Ruby on Rails的 - 部分用随机变量

<script> 
$(document).ready(function(){ 
    $('#add_shipping_address').click(function(e){ 
    $('#shipping_addresses').append("<%= escape_javascript(render :partial => 'shipping_address') %>"); 
    }); 
}); 
</script> 

局部呈现不错,但在我的部分我得到一个随机变量

<% random_id = rand(9999999) %> 

奇怪事情是我每次渲染部分通过点击该按钮随机变量是相同的,就像它产生一次,然后只是重复。这是一种正常的行为,如果是这样,我能做些什么来避免这种情况?

回答

4

该部分的内容在服务器端渲染一次,然后在客户端插入DOM X次,这就是随机值始终相同的原因。您可以:

  1. 生成使用JS的随机值(见Generating random whole numbers in JavaScript in a specific range?
  2. 调用服务器端的操作来呈现并插入另一部分
  3. 使某种服务器端的JSON API的产生随机值

NOTE(不是上述问题的根本原因,但值得一提的):如果你正在使用某种形式的缓存(如varnish),部分内容甚至可以在新的要求保持不变,在这种情况下,你可以移动这一代随机数字给控制器。

+0

如果它的缓存问题,你也可以使用缓存克星.. e.G中的一个随机部分 –

+0

这不是缓存问题。我可以在我的渲染调用中将通过JS生成的随机变量作为本地进行传递吗? –

+0

为什么不能在控制器上创建随机数并将其传递给视图? –