【问题标题】:slim template iniline ruby code苗条模板内联红宝石代码
【发布时间】:2014-06-27 11:50:20
【问题描述】:

我正在尝试在 slim 模板中包含一些 ruby​​ 代码,这是我想要放入 slim 中的代码:

      - nav_links_group = nil
      - if if_page_var('visible', :main_menu, :solutions)
      -   nav_links_group = @nav_links["solutions"]
      - elsif if_page_var('visible', :main_menu, :resources)
      -   nav_links_group = @nav_links["resources"]
      - elsif if_page_var('visible', :main_menu, :people)
      -   nav_links_group = @nav_links["people"]
      -end

      - if nav_links_group
      - current_index = nav_links_group.map{|e| e[0]}.index(request.original_url)
        - if current_index == 0
          span = sub_menu_link "#{nav_links_group[current_index + 1][0]}", "#{nav_links_group[current_index + 1][1]}"
        - elsif current_index + 1 == nav_links_group.count
          span = sub_menu_link "#{nav_links_group[current_index - 1][0]}", "#{nav_links_group[current_index - 1][1]}"
        - elsif current_index > 0 && current_index + 1 != nav_links_group.count
          span = sub_menu_link "#{nav_links_group[current_index - 1][0]}", "#{nav_links_group[current_index - 1][1]}"
          span = sub_menu_link "#{nav_links_group[current_index + 1][0]}", "#{nav_links_group[current_index + 1][1]}"
        - end
      - end

我得到了错误: 语法错误,意外的keyword_elsif

有什么建议吗?

【问题讨论】:

  • 你不能在 Slim 中拥有- end
  • 我有同样的错误没有 - 结束
  • 可能错误在这个方法if_page_var,它是什么样子的?
  • 不,if_page_var 没问题,好像问题出在 if/elsif 中
  • 没有行号有错误吗?

标签: ruby-on-rails slim-lang


【解决方案1】:

如果你需要在 slim 中做多行 ruby​​ 并且你没有添加元素,你可以使用ruby:,然后将缩进的代码放在它下面。

对于您的其他代码,只需删除 end 关键字

ruby:
  nav_links_group = nil
  if if_page_var('visible', :main_menu, :solutions)
    nav_links_group = @nav_links["solutions"]
  elsif if_page_var('visible', :main_menu, :resources)
    nav_links_group = @nav_links["resources"]
  elsif if_page_var('visible', :main_menu, :people)
    nav_links_group = @nav_links["people"]
  end

- if nav_links_group
  - current_index = nav_links_group.map{|e| e[0]}.index(request.original_url)
  - if current_index == 0
    span= sub_menu_link "#{nav_links_group[current_index + 1][0]}", "#{nav_links_group[current_index + 1][1]}"
  - elsif current_index + 1 == nav_links_group.count
    span= sub_menu_link "#{nav_links_group[current_index - 1][0]}", "#{nav_links_group[current_index - 1][1]}"
  - elsif current_index > 0 && current_index + 1 != nav_links_group.count
    span= sub_menu_link "#{nav_links_group[current_index - 1][0]}", "#{nav_links_group[current_index - 1][1]}"
    span= sub_menu_link "#{nav_links_group[current_index + 1][0]}", "#{nav_links_group[current_index + 1][1]}"

【讨论】:

    【解决方案2】:

    查看您的代码,我可以说您的问题是:

    • slim 不使用- end
    • 你的缩进弄乱了
    • 不要在标签和“=”之间使用空格(使用span= sub_menu_link,而不是span = sub_menu_link

    这里有一些例子

    - nav_links_group = nil
    - if if_page_var('visible', :main_menu, :solutions)
      - nav_links_group = @nav_links["solutions"]
    - elsif if_page_var('visible', :main_menu, :resources)
      - nav_links_group = @nav_links["resources"]
    - elsif if_page_var('visible', :main_menu, :people)
      - nav_links_group = @nav_links["people"]
    
    - if nav_links_group
      - current_index = nav_links_group.map{|e| e[0]}.index(request.original_url)
      - if current_index == 0
        span= sub_menu_link "#{nav_links_group[current_index + 1][0]}", "#{nav_links_group[current_index + 1][1]}"
      - elsif current_index + 1 == nav_links_group.count
        span= sub_menu_link "#{nav_links_group[current_index - 1][0]}", "#{nav_links_group[current_index - 1][1]}"
      - elsif current_index > 0 && current_index + 1 != nav_links_group.count
        span= sub_menu_link "#{nav_links_group[current_index - 1][0]}", "#{nav_links_group[current_index - 1][1]}"
        span= sub_menu_link "#{nav_links_group[current_index + 1][0]}", "#{nav_links_group[current_index + 1][1]}"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-28
      • 1970-01-01
      相关资源
      最近更新 更多