我正在尝试重构这个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",
有什么想法吗?
答案 0 :(得分:2)
“你做错了(tm)”;)
你的haml文件应该永远不会有这样的东西。把它变成帮手或装饰者。
记住,HAML不是一个功能齐全的Ruby解析器,它不能总是弄清楚你的代码在下一行继续。要提示它,您可以使用|
:结束您的行
答案 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正确读取它。