Ruby on rails RubyonRails-部分随机变量

Ruby on rails RubyonRails-部分随机变量,ruby-on-rails,partial-views,Ruby On Rails,Partial Views,我在我的视图中呈现一个局部视图,如下所示: <script> $(document).ready(function(){ $('#add_shipping_address').click(function(e){ $('#shipping_addresses').append("<%= escape_javascript(render :partial => 'shipping_address' ) %>"); }); }); </script

我在我的视图中呈现一个局部视图,如下所示:

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

$(文档).ready(函数(){
$(“#添加(发货地址)”)。单击(功能(e){
$('shipping_address')。追加('shipping_address')%>”;
});
});
部分渲染很好,但在我的部分中,我得到了一个随机变量

<% random_id = rand(9999999) %>


奇怪的是,每次我通过点击那个按钮渲染部分,随机变量都是一样的,就像它生成一次,然后重复。这是正常行为吗?如果是,我可以做些什么来避免这种情况?

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

  • 使用JS生成随机值(请参见)
  • 调用服务器端操作以呈现和插入另一个分部
  • 制作某种服务器端JSON API,生成随机值

  • 注意(不是上述问题的根本原因,但值得一提):如果您使用某种缓存(如),即使在新请求中,部分内容也可以保持不变,在这种情况下,您可以将随机数的生成移动到控制器。

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

  • 使用JS生成随机值(请参见)
  • 调用服务器端操作以呈现和插入另一个分部
  • 制作某种服务器端JSON API,生成随机值

  • 注意(不是上述问题的根本原因,但值得一提):如果您使用某种缓存(如),即使在新请求中,部分内容也可以保持不变,在这种情况下,您可以将随机数的生成移动到控制器。

    如果是缓存问题,您也可以使用缓存清除器。。e、 G URL中的随机部分。这不是缓存问题。我可以在渲染调用中将通过JS生成的随机变量作为本地变量传递吗?为什么不能在控制器上创建随机数并将其传递给视图?@StephanS。渲染调用仅在服务器端发生一次。如果在加载该页面后查看该页面的源,则该部分的完整内容将位于
    append
    函数中,而不再是实际的呈现调用。如果是缓存问题,也可以使用缓存清除器。。e、 G URL中的随机部分。这不是缓存问题。我可以在渲染调用中将通过JS生成的随机变量作为本地变量传递吗?为什么不能在控制器上创建随机数并将其传递给视图?@StephanS。渲染调用仅在服务器端发生一次。如果在加载该页面后查看该页面的源代码,则该部分的完整内容将位于
    append
    函数中,而不再是实际的呈现调用。