form_for 错误,每个错误和 fields_for 合并

Error with form_for, each and fields_for combined

我正在尝试创建一个 table,其中包含一种要编辑的数据形式。但是,我收到以下错误:

syntax error, unexpected ')' at line 73

第 73 行是 %tr.medium。我知道这不是问题所在,我认为这是 fields_for 行,但我不确定为什么这会导致问题,因为我基于类似的在线示例。

= form_for :campaign do
  - @campaigns.each do |campaign|
    = fields_for "campaign[]", campaign do |campaign_fields|
    %tr.medium
      %td= link_to campaign.name
      %td= campaign.status    
      %td
        -if ["New", "Updated"].include? campaign.status 
          = campaign_fields.check_box :status, {id: "#{campaign.id}", :class => "approvedservices"}, "Approved", ""
      %td{:style => "width:100px;"}
        -unless ["Rejected", "Approved"].include? campaign.status
          = campaign_fields.check_box :status, {id: "reject#{campaign.id}", :class => "rejectedservices"}, "Rejected", ""
      %td.notes{:style => "display: none"}
        = campaign_fields.text_field :notes, class: 'form-control mandatory', type: "input"
      %tr.medium
        %td.white{:colspan => 8}
        %td.white{:style => "width:100px;"}
          = campaign_fields.submit "Approve", :name => 'Commit'
        %td.white{:style => "width:100px;"}
          = campaign_fields.submit "Reject", :name => 'Reject'

有什么建议吗?

%tr.medium 后面的代码应该像这样标记:

= fields_for "campaign[]", campaign do |campaign_fields|
  %tr.medium
    %td= link_to campaign.name

因为 HAML 类似于 Python,它根据其跳格级别决定代码块 "level"。

HAML 严格来说是一种需要缩进的语言,所以当您错过缩进时,错误就发生了,

= form_for :campaign do
  - @campaigns.each do |campaign|
    = fields_for "campaign[]", campaign do |campaign_fields|
      %tr.medium
        %td= link_to campaign.name
        %td= campaign.status    
        %td
          -if ["New", "Updated"].include? campaign.status 
            = campaign_fields.check_box :status, {id: "#{campaign.id}", :class => "approvedservices"}, "Approved", ""
        %td{:style => "width:100px;"}
          -unless ["Rejected", "Approved"].include? campaign.status
            = campaign_fields.check_box :status, {id: "reject#{campaign.id}", :class => "rejectedservices"}, "Rejected", ""
        %td.notes{:style => "display: none"}
          = campaign_fields.text_field :notes, class: 'form-control mandatory', type: "input"
      %tr.medium
        %td.white{:colspan => 8}
        %td.white{:style => "width:100px;"}
          = campaign_fields.submit "Approve", :name => 'Commit'
        %td.white{:style => "width:100px;"}
          = campaign_fields.submit "Reject", :name => 'Reject'

复制这段缩进的代码并尝试一次。