联合国渲染部分?

时间:2014-04-02 22:29:30

标签: jquery ruby-on-rails ajax

用户可以从两个单独的列表,旧集合和新集合中为事件分配引荐。两个集合都分配给相同的属性。因此,最后呈现的collection_select是表单唯一识别的。{1}}。因此,我决定只在用户需要时才渲染第二个列表:

<div id="old_collection">
  <%= collection_select(stuff) %>
</div>

<div id="new_collection"></div>

<input id="render_new_collection" href="#" type="checkbox">New-Collection?      

<script>
    $j(function(){
      $j("#render_new_collection").click(function(){
        $j("#old_collection").toggle();
        $j("#new_collection").html("<%= escape_javascript(render(:partial => 'new_collection')) %>");
      });
    });
</script>

这很好用,但它的设置方式是死路一条:用户不能改变主意并使用旧的收藏,除非他们刷新页面。有没有办法取消渲染部分,只留下页面上的原始形式?

1 个答案:

答案 0 :(得分:1)

您可以通过在新集合和旧集合之间切换来实现。

$j(function(){
  $j("#render_new_collection").change(function(){
    if($j(this).is(':checked')) {
      $j("#old_collection").hide();
      $j("#new_collection").html("<%= escape_javascript(render(:partial => 'new_collection')) %>");
    }
    else {
      $j("#old_collection").show();
      $j("#new_collection").html('');
    }
  });
});

虽然这应该可以,但我们应该将javascript代码保存在单独的javascript文件中。