我想在我的公共 index.html 中使用 ruby(例如用于样式表或表单)。但我不知道该怎么做:S
如果我将它重命名为 index.html.erb 或 index.erb 它不会被 rails 识别。相反,我使用了路由中的根(这是应用程序的一部分,需要用户登录)。
我想在我的公共 index.html 中使用 ruby(例如用于样式表或表单)。但我不知道该怎么做:S
如果我将它重命名为 index.html.erb 或 index.erb 它不会被 rails 识别。相反,我使用了路由中的根(这是应用程序的一部分,需要用户登录)。
目录中的任何内容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 -->
这会给你你想要的行为。
您应该生成正确的控制器和视图(扩展名为 html.erb)。您还应该index.html
从公共文件夹中删除并告诉 Rails 路由器(通过修改 config/routes.rb)在 root 上使用您的控制器,例如:
root to: 'home#index'
你不能同时root to: ....
在你的路由文件和public/index.html
页面中设置,如果你在你的routes.rb
文件中使用 root 这意味着你应该index.html
从公共目录中删除,所以你只需要在你的视图中设置根路径来测试用户是否是登录?如果是:向他展示一些内容,如果不向他展示其他内容。希望这对你有帮助
注意:PUBLIC目录用于渲染静态页面,其中没有任何 ruby 代码,这意味着当您从公共目录请求页面时,它永远不会调用 rails 服务器来解释它,因此您不能添加 .erb 扩展名。
在您的控制器中
def home
@datas = Datas.all
render :file => 'public/index.html'
end