Rails如何设置每个action的layout?

Rails如何设置每个action的layout?,第1张

layout方法还支持:except和:only两个选项,用来选择layout方法影响到的action,顾名思义吧,不记了。

layout "product", :except => [:index, :rss]

layout "product", :only => [:edit]

还可以用动态layout的方法

动态布局 

当layout方法的参数为一个symbol的时候,这个controller的布局是动态的,必须在controller里定义一个与symbol对应的方法(一般为private即可),这个方法必须返回一个字符串,用作指定布局的名字:

class ProductsController < ApplicationController  

 layout :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


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11380904.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存