ruby-on-rails Tailwind css无法使用ruby on rails正确渲染Tailwind ui组件

slhcrj9b  于 2023-10-21  发布在  Ruby
关注(0)|答案(1)|浏览(130)

我正在使用tailwind css沿着tailwind ui的rails 7项目的预构建组件。
我按照他们的ruby on rails指南安装了tailwind-https://tailwindcss.com/docs/guides/ruby-on-rails
一些实用程序类似乎正在工作。就像我可以改变我的导航链接的颜色使用实用类,但当我试图复制一些预先构建的组件从顺风ui,它不正确渲染
这就是我的应用程序主体的外观x1c 0d1x
这就是它目前的样子

下面是我的一些文件application.tailwind.css

@import "tailwindcss/base";

@import "tailwindcss/components";

@import "tailwindcss/utilities";


/*

@layer components {
  .btn-primary {
    @apply py-2 px-4 bg-blue-200;
  }
}

*/

我的config/tailwind.css

const defaultTheme = require('tailwindcss/defaultTheme')

module.exports = {
  content: [
    './public/*.html',
    './app/helpers/**/*.rb',
    './app/javascript/**/*.js',
    './app/views/**/*',
    './app/views/**/*.{erb,haml,html,slim}',
  ],
  theme: {
    extend: {
      fontFamily: {
        sans: ['Inter var', ...defaultTheme.fontFamily.sans],
      },
    },
  },
  plugins: [
    require('@tailwindcss/forms'),
    require('@tailwindcss/aspect-ratio'),
    require('@tailwindcss/typography'),
    require('@tailwindcss/container-queries'),
  ]
}

我的application.html.erb

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Kickconnect</title>
    <%# <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> %>

    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>
    <%= stylesheet_link_tag "tailwind", "inter-font", "data-turbo-track": "reload" %>
     <%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>

    <%= javascript_importmap_tags %>
  </head>

  <body class="prose mx-auto" >
    <%= render partial:'home/newheader' %>
   
    <div class=>
    <%=notice%> 
     <%= yield %>
    </div>
    
    <%# <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script> %>
  </body>
</html>

我几乎已经尝试了一切让它工作,但它不会妥善渲染。我试着运行“./bin/dev.”,没有改变任何事情。

wwodge7n

wwodge7n1#

当您更改文件时,预编译资源不会更改。bin/rails assets:precompile是用于生产的,你不需要在开发中运行它。bin/rails assets:clobber删除预编译的资源。
其余的是你可能不需要的细节,但知道这些是有用的:
bin/dev等于:

# bin/dev

foreman start -f Procfile.dev

这将启动你的rails服务器和tailwind watcher,在任何文件更改时编译你的css:

# Procfile.dev

web: bin/rails server
css: bin/rails tailwindcss:watch[debug]

css:部分只是通过rails并从tailwindcss-rails gem运行一个rake任务,然后运行底层的tailwind命令:

tailwindcss -w -i ./app/assets/stylesheets/application.tailwind.css -o ./app/assets/builds/tailwind.css -c config/tailwing.config.js

这就是为什么你在布局中包含stylesheet_link_tag "tailwind"而不是“应用程序”。

<link rel="stylesheet" href="/assets/tailwind-9c64e6c4285db52078d6a7537e9e32ee60f6d54c2e68fea533ea2b196e6c8aa9.css" data-turbo-track="reload">

有两个地方可以处理这个请求^。第一个是ActionDispatch::Static中间件(参见bin/rails middleware),它从public目录服务文件。这些资产优先,将首先得到服务。第二个是sprockets引擎,它安装在你的路由中。
bin/rails assets:precompile-您只为生产部署执行此操作。它会编译你所有的资产,并把它们放在public/assets中(这些应该由你的web服务器处理,例如nginx)。public/assets中的文件在您更改文件时不会更新,除非您再次运行预编译。
bin/rails assets:clobber-只删除public/assets目录。
现在您没有该目录,您的资产请求可以点击sprockets引擎,该引擎将动态编译资产并提供新的和更新的资产。这样,当您进行更改时,您的资源始终会更新,在本例中是更新的tailwind.css文件。
同样需要说明的是,app/assets/stylesheets/application.tailwind.css首先由tailwind编译,然后sprocketsapp/builds/tailwind.css连接到rails生命周期中。

相关问题