rails 开发随手记 5
这篇在草稿箱里躺了好久
rails ajax api 授权验证
我起初想通过:
def output if signed_in? respond_to do |format| format.js end end end
来防止未经授权的用户访问ajax api,结果发现总是有问题,即使未登录也会请求成功。
花了几个小时,才搞明白,原来是rails的默认机制搞的鬼,即使你显示的写了respond_to,他也有内置的default_render,会渲染对应的文件。于是把output.js.erb删除,改成
def output if signed_in? @userType=getUserType respond_to do |format| format.js {render :partial => 'output1'} end end end
即可,记得要把对应的文件名前面加上下划线:_output1.js.erb 又是rails的命名机制搞的鬼。
---------------------------------------------------------------------------分割--------------------------------------------------------------------------------------------------------------------------------------
bootstrap Dynamic Add Tab 动态添加标签页
这个又是折腾了我很久很久,到现在依旧不知“不然”,不明白自己的代码为什么有问题,我只有一个推测。反正现在这个能用了,就拿过来用吧。
注意:tab的id,href不能出现重复
<ul class="nav nav-tabs" id="myTab"> <li><a href="#home" data-toggle="tab">首页</a></li> </ul> <div class="tab-content" id="myTabContent"> <div class="tab-pane" id="home"> <h1>Welcome! !</h1> </div> </div> <script> $(function () { $('#myTab a:first').tab('show'); }); $.getScript('<%= sidebar_path+"?sb=sb" %>'); $("#my-side-bar").on("click", "a", function(event){ var ele=$(this); if(!ele.data('hasTab')) { addTab(ele.attr('id')) ; ele.data('hasTab',1); } $('#myTab a[href="#'+ele.attr('id')+'Tab"]').tab('show'); } ); function addTab(id) { $('div.active').removeClass('active').removeClass('in'); $('li.active').removeClass('active'); $('#myTabContent').append('<div class="tab-pane in active" id="'+id+'Tab"><p> Loading content ...</p></div>'); $('#myTab').append('<li><a href="#'+id+'Tab" data-toggle="tab">Tab Name</a></li>'); $('#myTab a:last').tab('show'); } </script>
效果就是一个侧边栏,然后点击不同的链接会有不同的标签页