将 splat 属性从 Slim 转换为 ERB

Converting splat attributes from Slim to ERB

我是 Rails 的新手,我的任务是将用 slim 编写的遗留代码更改为 ERB。一切都很顺利,但是当我到达splat属性时,发现自己被阻止了。

我要改的slim是这样的:

doctype html
html lang="en" *data_turbolinks_messages
  head

相应的控制器是:

DATA_TURBOLINKS_MESSAGES = {
    'data-turbolinks-messages' => ENV.fetch('TURBOLINKS_MESSAGES')
  }.freeze  

def data_turbolinks_messages
    DATA_TURBOLINKS_MESSAGES
end

我预料的最终 HTML 是这样的:

<!DOCTYPE html>
<html data-turbolinks-messages="VariableValue" lang="en">
<head></head></html>

我试过使用 slimrb --rails -e,但结果有很多像 ::Slim::Splat::Builder.new(_slim_splat_filter) 这样的细长辅助对象,我不知道如何在 ERB 中编写它。

我尝试过的其他解决方案(这里是在黑暗中拍摄..又是 Rails 的新手)

有没有办法将该散列作为键值标记参数,希望不更改具有其他依赖项的控制器?

谢谢!

最终我不得不更改控制器,因此哈希使用符号作为键

DATA_TURBOLINKS_MESSAGES = {
    :'data-turbolinks-messages' => ENV.fetch('TURBOLINKS_MESSAGES')
  }.freeze  

def data_turbolinks_messages
    DATA_TURBOLINKS_MESSAGES
end

一旦我这样做了,我就可以用辅助标签在 ERB 中拼写哈希。我还使用 content_tag 而不是 tag

<!DOCTYPE html>
<%= content_tag(:html, **data_turbolinks_messages, :lang => "pt" ) do %>
...
<% end %>

我仍然不知道这是好是坏的解决方案,因为我经历了反复试验,所以欢迎任何新的答案!