在将数据合并到Haml中的本地时,无法呈现部分

时间:2014-12-04 15:50:21

标签: ruby-on-rails haml

我正在尝试重构这个haml:

= render 'graph_stats_portrait', item_title:       "Users",
                      chart_color:      "#fd6a2f",
                      chart_bg_color:   "#ffffff",
                      circle_color:     "orange",
                      total:            @user_data[:total],
                      by_date:          @user_data[:by_date],
                      total_today:      @user_data[:total_today],
                      total_this_week:  @user_data[:total_this_week],
                      total_this_month: @user_data[:total_this_month],
                      total_yesterday:  @user_data[:total_yesterday],
                      total_last_week:  @user_data[:total_last_week],
                      total_last_month: @user_data[:total_last_month]

对此:

= render 'graph_stats_portrait',{
  item_title:       "Users",
  chart_color:      "#fd6a2f",
  chart_bg_color:   "#ffffff",
  circle_color:     "orange"
  }.merge(@user_data)

我收到此错误:

app/views/admin/dashboard/index.html.haml:6: syntax error, unexpected ';', expecting =>
...erge(@user_data)\n", 0, false);end;_hamlout.buffer << _hamlo...
...   

第6行是这样的:

item_title:       "Users",

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

“你做错了(tm)”;)

你的haml文件应该永远不会有这样的东西。把它变成帮手或装饰者。

记住,HAML不是一个功能齐全的Ruby解析器,它不能总是弄清楚你的代码在下一行继续。要提示它,您可以使用|

结束您的行

请参阅http://haml.info/docs/yardoc/file.FAQ.html#q-multiline

答案 1 :(得分:0)

维塔利值得赞扬,因为我指的是正确的方向,他说这应该是帮助者或装饰者是正确的。

但是....

这就解决了这个问题:

= render 'graph_stats_portrait',
  { item_title:       "Users",
  chart_color:      "#fd6a2f",
  chart_bg_color:   "#ffffff",
  circle_color:     "orange"}.merge(@user_data)

请注意,每一行都以逗号结尾(最后一行除外)。

我将{向下移动到下一行,}.merge(@user_data)向上移动了一个级别。

这允许Haml正确读取它。