beast学习笔记——2,forums_controller

beast学习笔记——2,forums_controller

参考

 
 
 
1,
(1)代码:
before_filter :admin_required, :except => [:index, :show]
(2)表示:
前置过滤器,对index,show方法除外
(3)其他:
admin_required方法存储在哪里?在forums_controller、application_controller中都没有,但是application_controller中有一个 include AuthenticatedSystem ,于是到 /lib目录中authenticated_system.rb,里面有定义
 
2,
(1)代码
session[:forums_page] = nil
(2)表示:
当进入显示所有项index方法时,清空session中存储的 页数forums_page
(3)其他
session存储在哪里?可以看看enviroment.rb中的”config.action_controller.session_store“,常用的是三种:
【1】rails2以上的版本,默认把session放在基于cookie的客户端中即session以 hash的格式每次作为cookie发送到客户端浏览器来保持
rails1版本默认是CGI:Session:PStore,存储在服务器上的一个PStore格式的文件中。
【2】:action_record_store,存储在数据库session表中。
【3】:drb_store,存储在一个DRb服务器上。
注:当我们向一个域名发送一个请求的时候,如果存在这个域名的cookie,浏览器会自动把cookie附带上。
3
(1)代码
@forums = current_site.ordered_forums
(2)表示
创建forums实例变量,存储什么?为什么不是标准的 @forums = Forum.find( :all, : order => "position"),
【1】这里有一个当没有站点时的转向问题(其实在安装beast时 rake app:bootstrap已经引导你建立站点了)。
可以导到 current_site在/lib目录中 authenticated_system.rb里面有定义:
def current_site
      @current_site ||= Site.find_by_host(request.host) or raise Site::UndefinedError
end
 
这个方法是先是用||= 看@current_site有没有值,如果没有就用Site.find_by_host(request.host)获取一个值赋给@current_site(这里request.host是会得到主机的名称,我在本机上运行,这会得到localhost),如果Site里还没有这个值,就再执行 raise Site::UndefinedError。

这个异常应该是自定义的。打开Site模型文件app/model/site.rb,就会看到
class UndefinedError < StandardError; end
这一行,原来UndefinedError是继承至StandardError类。

异常被抛出来,就得处理它。其实,我们之前在浏览 application_controller.rb代码,就发现了一个rescue_from方法:
rescue_from Site::UndefinedError do |e|
    redirect_to new_site_path
end

看到这里,我想都明白为什么在 第一次运行Beast时,会重定向到新建站点的页面了。
【2】. ordered_forums表示什么,见site.rb中的:
  def ordered_forums(*args)
    forums.ordered(*args)
  end
再见forum.rb中的:
  def self.ordered
    find :all, :order => 'position'
  end
于是,. ordered_forums表示查询forum并按照position排序
4,
(1)代码
    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @forums }
    end
(2)表示
表示,当HTTP首部的Accept-Type要求返回的类型为text/html 时,view指向默认的index.html。当要求返回的类型为xml/text时,view将会指向一个xml,此xml由模型forum自动生成

你可能感兴趣的:(html,xml,浏览器,Blog,cgi)