ruby-on-rails Rails 7和Tailwind动态类

dojqjjoe  于 2022-12-15  发布在  Ruby
关注(0)|答案(4)|浏览(119)

我有一个带有顺风的Rails 7应用程序,我正在做这样的事情:

@list = [{name: "Some", width: "3/12"}, {name: "other", width: "6/12"}]

# In the view
<%= render 'mypartial': list: @list %>

# In the partial
<% list.each do |item|%>
  <div class="w-<%= item[:width] %>">
    <%= item[:name] %>
  </div>
<% end %>

视图生成了正确的HTML(ex: <div class="w-6/12">),但是浏览器无法识别这些类。如果我不传递变量就硬编码它们,一切正常。我是做错了什么还是遗漏了什么?

d8tt03nd

d8tt03nd1#

如果有人有同样的问题,这是从doc

## Class names must be spelled out

For Tailwind to work, your class names need to be spelled out. They can't be programmatically composed. So no "text-gray-#{grade}", only "text-gray-500".

Atm,我在tailwind.config.js中添加了一个动态变量列表,它工作正常,但您需要确保所有的动态变量都在那里。

purge: {
    safelist: [
     w-1/12,
     ....
    ],
  },
wwwo4jvm

wwwo4jvm2#

动态创建类是行不通的。

# application_helper.rb

def badge(text, color)
  tag.div text, class: "… bg-#{color}-500 …"
end

# show.html.erb

<%= badge('Completed', 'green') %>

这将不会在构建中生成bg-green-500类,因为构建过程只会扫描html.erb文件,而不会在处理它们时进行扫描,因此它永远不会看到bg-green-500类。

waxmsbnn

waxmsbnn3#

如果你知道你需要什么选项,你也可以在你的模板中添加动态类作为注解。我正在尝试这种方法,因为这样我的动态样式就在我使用它们的地方旁边。
这里Slim代码:

/ To force tailwind to recognize the dynamic styles to apply
/ .hidden.pl-2.pl-4.pl-6

尽管有注解,意味着没有呈现到HTML,Tailwind仍然很好地拿起它。

lnxxn5zx

lnxxn5zx4#

如果你能列出一个生成的动态类的完整列表,那么你可以在tailwind.config.js文件中将它们加入白名单。举例来说,假设你有一个erb文件,包含:

link_to 'Show', project_path, class: "text-#{color}-700"

您只需要列出动态生成的值,例如:

module.exports = {
  purge: {
    safelist: [
      'text-green-700',
      'text-red-700',
    ],
  },
}

相关问题