将 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.html_safe -%>
<%= *data-turbolinks-messages %>
<%= data-turbolinks-messages.to_s %>
<% *data-turbolinks-messages.html_safe %>
<%= tag.html lang:'en' data-turbolinks-messages %>
<%= tag.html lang:'en' data: data-turbolinks-messages do %>...<% end %>
<%= tag.html lang:'en' data:{data-turbolinks-messages} do %>...<% end %>
有没有办法将该散列作为键值标记参数,希望不更改具有其他依赖项的控制器?
谢谢!
最终我不得不更改控制器,因此哈希使用符号作为键
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 %>
我仍然不知道这是好是坏的解决方案,因为我经历了反复试验,所以欢迎任何新的答案!
我是 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.html_safe -%>
<%= *data-turbolinks-messages %>
<%= data-turbolinks-messages.to_s %>
<% *data-turbolinks-messages.html_safe %>
<%= tag.html lang:'en' data-turbolinks-messages %>
<%= tag.html lang:'en' data: data-turbolinks-messages do %>...<% end %>
<%= tag.html lang:'en' data:{data-turbolinks-messages} do %>...<% end %>
有没有办法将该散列作为键值标记参数,希望不更改具有其他依赖项的控制器?
谢谢!
最终我不得不更改控制器,因此哈希使用符号作为键
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 %>
我仍然不知道这是好是坏的解决方案,因为我经历了反复试验,所以欢迎任何新的答案!