ruby-on-rails – Rails中的静态页面?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails中的静态页面?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我想知道在Rails中做静态页面的最好方法是什么,或者说是Rails 3.我一直对此有些困惑,就像我应该创建一个控制器吗?

解决方法

你可以采取各种方法(他们不是很好的方法).

1 – 公共目录

如果它真的是静态的,你可以把它放在公共目录中.公共目录中的东西将立即提供,而不必通过Rails堆栈.

优点:

>因为它不必浪费时间通过Rails堆栈,客户端将收到更快的响应.

缺点:

>您将无法使用您的网站布局.或查看像link_to这样的助手.
而不是你的意见在一个地方(app / views),现在他们在两个地方(app / views和public).这可能令人困惑.

想法:我非常强烈地认为,缺点超过了这里的优势.如果您希望以可读性和程序员的幸福为代价,轻率地提高速度,为什么首先使用Rails?

2 – 放置在应用程序/视图中,直接从路由器渲染

从路由器渲染视图是possible.但是,这绝对不是Rails的方式.

从官方RailsGuide on routing

1 The Purpose of the Rails Router

The Rails router recognizes URLs and dispatches them to a controller’s action.

在建筑上,将路由器直接映射到视图并没有任何内在的错误.许多其他框架都是这样做的.但是,Rails不这样做,偏离既定惯例可能会混淆其他开发者.

like should I create a controller or not?

除非你想采取上述方法之一 – 是的,你应该创建一个控制器.

那么问题就会成为控制器的名字.这个答案概述了一些选择.我会在这里列出一些想法.我还会添加另外三个选项.

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

Our method for making static pages is probably the simplest,but it’s not the only way. The optimal method really depends on your needs; if you expect a large number of static pages,using a Static Pages controller can get quite cumbersome,but in our sample app we’ll only need a few. If you do need a lot of static pages,take a look at the high_voltage gem. ↑

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')%&gt ;.

猜你在找的Ruby相关文章