用户可以从两个单独的列表,旧集合和新集合中为事件分配引荐。两个集合都分配给相同的属性。因此,最后呈现的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>
这很好用,但它的设置方式是死路一条:用户不能改变主意并使用旧的收藏,除非他们刷新页面。有没有办法取消渲染部分,只留下页面上的原始形式?
答案 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文件中。