【问题标题】:wice_grid (ruby on rails): ERB to SLIMwice_grid (ruby on rails):ERB 到 SLIM
【发布时间】:2020-02-01 09:28:53
【问题描述】:

我正在使用wice-grid gem

他们的示例显示了.erb 中的视图,但我想在我的项目中使用.slim,但在将示例erb 转换为工作slim 时遇到问题。

# ERB renders and works perfectly
<%= grid(@tasks_grid) do |g|

  g.column do |task|
    task.id
  end

  g.column  do |task|
    task.title
  end
end -%>
# Converted SLIM does not render properly
- grid(@tasks_grid) do |g|
  - g.column do |task|
    = task.id

  - g.column  do |task|
    = task.title

我试过使用这个erb2slim 转换器,但它输出end,而slim 不允许。

编辑: 解决方案(感谢下面的帮助!)

# Generate grid
- grid = grid(@tasks_grid) do |g|
  - g.column do |task|
    - task.id

  - g.column  do |task|
    - task.title

# Render content in a safe way
= content_tag(:div, grid)

【问题讨论】:

    标签: ruby-on-rails ruby erb slim-lang


    【解决方案1】:
    = grid(@tasks_grid) do |g|
      - g.column do |task|
        - task.id
    
      - g.column  do |task|
        - task.title
    

    = 等于 ERB 模板中的 &lt;%=。它输出表达式。 - 评估但不像 ERB 中的 &lt;% 那样输出。如果您查看 erb 模板,您会发现它只是输出 grid(@tasks_grid) do 的返回值而不是 task.id

    另请注意,转换器很少能 100% 完成这项工作,并且不能替代同时了解原始语言和目标语言。它们只是提供了一个起点,使过程不那么艰巨。

    【讨论】:

    • ERB 模板有&lt;%=grid(@tasks_grid) 输出整个块。我尝试将苗条版本更改为:
    • 是的,很抱歉第一个字符应该是 =。我已经编辑了答案。
    • 谢谢!我想它几乎就在那里。转换为上面的示例后,我可以呈现一个包含表格 html 的字符串。为了让它真正显示为 html,我做了- table_output = grid(@tasks_grid) do |g| 然后在块之后,渲染它:= table_output.html_safe。它比我想要的要复杂一些,但可以管理。您对更清洁的方法有什么建议吗?
    • 在 slim 中,您不能像在 ERB 中那样仅在 end 上调用方法,因此这可能是模板中最简洁的方法。您可以编写一个包装grid 并调用super.html_safe 的方法。但我真的不明白你为什么要调用 .html_safe 。这首先可能不是最好的主意。 makandracards.com/makandra/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    相关资源
    最近更新 更多