2

我想在我的公共 index.html 中使用 ruby​​(例如用于样式表或表单)。但我不知道该怎么做:S

如果我将它重命名为 index.html.erb 或 index.erb 它不会被 rails 识别。相反,我使用了路由中的根(这是应用程序的一部分,需要用户登录)。

4

4 回答 4

4

目录中的任何内容public都呈现为静态资产,因此其中没有 Ruby 代码。

相反,您应该删除该index.html目录中的文件,并将其替换为应用程序中的其他内容。例如,您可以执行以下操作:

# app/controllers/site_controller.rb
class SiteController < ApplicationController
  def index
    # ...
  end
end

# config/routes.rb
root to: 'site#index'

# app/views/site/index.html.erb
<!-- Your HTML and Ruby here -->

这会给你你想要的行为。

于 2013-08-28T14:19:36.280 回答
2

您应该生成正确的控制器和视图(扩展名为 html.erb)。您还应该index.html从公共文件夹中删除并告诉 Rails 路由器(通过修改 config/routes.rb)在 root 上使用您的控制器,例如:

root to: 'home#index'
于 2013-08-28T10:32:28.820 回答
1

你不能同时root to: ....在你的路由文件和public/index.html页面中设置,如果你在你的routes.rb文件中使用 root 这意味着你应该index.html从公共目录中删除,所以你只需要在你的视图中设置根路径测试用户是否是登录?如果是:向他展示一些内容,如果不向他展示其他内容。希望这对你有帮助

注意PUBLIC目录用于渲染静态页面,其中没有任何 ruby​​ 代码,这意味着当您从公共目录请求页面时,它永远不会调用 rails 服务器来解释它,因此您不能添加 .erb 扩展名。

于 2013-08-28T11:04:56.080 回答
0

在您的控制器中

def home
 @datas = Datas.all
 render :file => 'public/index.html'
end
于 2016-12-17T02:58:47.397 回答