HAML - 错误意外的keyword_ensure,期望输入结束

时间:2015-07-28 14:30:17

标签: ruby-on-rails haml

语法haml有什么问题?我用了2个空格。显示错误: /home/user/myapp/bds/app/views/polls/_voting_form.html.haml:14:语法错误,意外的keyword_ensure,期待输入结束

= form_tag votes_path, method: :post, remote: true, id: 'voting_form'
  = hidden_field_tag 'poll[id]', @poll.id

  = render partial: 'polls/poll_item', collection: @poll.poll_items, as: :item  

  %p 
    %b Итого голосов: = @poll.votes_count

  - if current_user.voted_for?(@poll)
    %p Вы уже голосовали!
  - else
    = submit_tag 'Голосовать', class: 'btn-bg'

2 个答案:

答案 0 :(得分:7)

我看到两个错误:

  • 您错过了do行的form_tag
  • 第二个错误没有阻塞,但对于votes_count:要么使用字符串插值,要么在多行上写(现在它只是将其打印为字符串)

最简单的解决方案是编写

%b Итого голосов: #{@poll.votes_count}

答案 1 :(得分:2)

以下是两个错误:

= form_tag votes_path, method: :post, remote: true, id: 'voting_form' # <= missing do
  ....
  %p 
    %b Итого голосов: = @poll.votes_count # <= no valid haml

应该是

= form_tag votes_path, method: :post, remote: true, id: 'voting_form' do
  ....
  %p 
    %b 
      Итого голосов:
      = " #{@poll.votes_count}"

您可能不会将普通文本添加到需要=的ruby代码段中。我不认为有一个编译器可以解释这个。 这样:

%b= @poll.votes_count # this works
%b Votes count: = @poll.votes_count # this does not

因此:

%b 
  Итого голосов:
  = " #{@poll.votes_count}"

%b= "Итого голосов: #{@poll.votes_count}"

是要走的路。