
layout方法还支持:except和:only两个选项,用来选择layout方法影响到的action,顾名思义吧,不记了。
layout "product", :except => [:index, :rss]
layout "product", :only => [:edit]
还可以用动态layout的方法
动态布局
当layout方法的参数为一个symbol的时候,这个controller的布局是动态的,必须在controller里定义一个与symbol对应的方法(一般为private即可),这个方法必须返回一个字符串,用作指定布局的名字:
class ProductsController < ApplicationControllerlayout :products_layout
def show
@product = Product.find(params[:id])
end
private
def products_layout
@current_user.special? ? "special" : "products"
end
end
当我们需要开放API给非浏览器客户端时,需要关闭CSRF
session还可以用其他的方式来存储,可以修改config/initializers/session_store.rb:
如果采用:active_record_store的话,必须安装activerecord-session_store这个gem包。然后产生sessions数据表
因为资料是放在用户浏览器的,不希望用户更改
也可以让cookie永远留在浏览器中
两者可以同时使用
Flash会将资料保存到下一个request中去
常用的有before_action、after_action、around_action。
均可以搭配:only或者:except.
如果需要取消从父类中继承过来的filter,可以使用skip_before_action同理还有skip_after_action和skip_aroun_action。
可以让controller在特定的状况下执行特定的 *** 作。
对于没有拦截到的 *** 作,rails会渲染500页面。比较常见使用rescue_from的是使用第三方库,该库可能丢出一些事件,如果你要做额外的错误处理。比如在使用pundit检查权限这个第三方库,如果发生权限不够的时候就会抛出Pundit::NotAuthorizedError异常。
可以在action中这样使用
Template的命名规则是index.html+phone.erb和index.html+teblet.erb
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)