ruby-on-rails – Rails中的静态页面?
所以我想知道在Rails中做静态页面的最好方法是什么,或者说是Rails 3.我一直对此有些困惑,就像我应该创建一个控制器吗?
解决方法
你可以采取各种方法(他们不是很好的方法).
1 – 公共目录 如果它真的是静态的,你可以把它放在公共目录中.公共目录中的东西将立即提供,而不必通过Rails堆栈. 优点: >因为它不必浪费时间通过Rails堆栈,客户端将收到更快的响应. 缺点: >您将无法使用您的网站布局.或查看像 想法:我非常强烈地认为,缺点超过了这里的优势.如果您希望以可读性和程序员的幸福为代价,轻率地提高速度,为什么首先使用Rails? 2 – 放置在应用程序/视图中,直接从路由器渲染 从路由器渲染视图是possible.但是,这绝对不是Rails的方式. 从官方RailsGuide on routing:
在建筑上,将路由器直接映射到视图并没有任何内在的错误.许多其他框架都是这样做的.但是,Rails不这样做,偏离既定惯例可能会混淆其他开发者.
除非你想采取上述方法之一 – 是的,你应该创建一个控制器. 那么问题就会成为控制器的名字.这个答案概述了一些选择.我会在这里列出一些想法.我还会添加另外三个选项. 3 – 使用ApplicationController # routes.rb get "/about" to: "application#about" # application_controller.rb class ApplicationController < ActionController::Base def about render "/about" end end # app/views/about.html.erb 这里的优点是您不会通过创建一个新的控制器和文件夹来引入开销/膨胀.缺点是它不是Rails的方式.您创建的每个控制器都将继承自ApplicationController. ApplicationController通常用于容纳您希望在所有其他控制器之间共享的功能.从Action Controller Overview Rails Guide看这个例子: class ApplicationController < ActionController::Base before_action :require_login private def require_login unless logged_in? flash[:error] = "You must be logged in to access this section" redirect_to new_login_url # halts request cycle end end end 4 – StaticController或StaticPagesController Michael Hartl的热门Ruby on Rails教程uses一个StaticPagesController.我同意source我得到这个,因为我不喜欢这种方法,因为页面通常不是静态的. 另外,有可能混淆 – 为什么我们把其他静态视图放在单独的控制器中?静态视图不应该从StaticPagesController呈现?我不认为混淆的可能性太高,但还是想注意. 另请注意Hartl的footnote:
5 – PagesController 官方的Ruby on Rails routing guide使用PagesController.我认为这种方法是好的,但它根本不是描述性的.一切都是一个页面.这些页面与其他页面有何区别? 6 – 未分类的页面控件 我会调用控制器UncategorizedPagesController,因为这正是他们的 – 未分类的页面.是的,输入和阅读有点麻烦.我更喜欢简洁明了的优点,但我可以理解选择更简洁,并与PagesController或其他东西一起去. 7 – 高压宝石 使用High Voltage,您无需做冗长乏味的写作路线和空控制器操作: # routes.rb root 'pages#home' get '/about',to: 'pages#about' get '/contact',to: 'pages#contact' get '/help',to: 'pages#help' get '/terms-of-service',to: 'pages#terms_of_service' get '/landing-page',to: 'pages#landing_page' ... # pages_controller.rb def PagesController > ApplicationController def home end def about end def contact end def help end def terms_of_service end def landing_page end ... end 您只需将页面添加到app / views / pages并链接到:<%= link_to'About',page_path('about')%> ;. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |