HAML和条纹在form_for中,我不断收到编译错误。有什么明显的错误吗?

HAML和条纹在form_for中,我不断收到编译错误。有什么明显的错误吗?

问题描述:

我只是将我的应用程序切换到rails 3.1和ruby 1.9。我也通过他们的API整合了Stripe。也许这是造成问题? 我无法弄清楚我的生活这个表格的问题是什么。它说第一个错误在第3行与else声明(这是一个编译错误,下面的完整错误细节)。所有的缩进都是一致的,我逐行进行修复。让我知道是否应该发布更多信息,比如我的gemfile或其他东西。HAML和条纹在form_for中,我不断收到编译错误。有什么明显的错误吗?

这里是有问题的形式:

=if 
    %h1 Sign up 
=else 
    %h1 Edit 
=form_for(@user) do |f| 
    =render "shared/error_messages", :target => @user 
    =f.hidden_field :stripe_card_token 
    %dl 
     =if signed_in? 
      %dt.field=f.label :avatar 
      %dd.field=f.file_field :avatar 
     %dt.field=f.label :name 
     %dd.field=f.text_field :name 
     %dt.field=f.label :email 
     %dd.field=f.text_field :email 
     =if @user.new_record? 
      %dt.field=f.label :password 
      %dd.field=f.password_field :password 
     =if @user.stripe_card_token.present? 
      %p Credit card has been provided. 
     =else 
      %div.field 
       =label_tag :card_number, "Credit Card Number" 
       =text_field_tag :card_number, nil, name:nil 
      %div.field 
       =label_tag :card_code, "Security Code on Card (CVV)" 
       =text_field_tag :card_code, nil, name:nil 
      %div.field 
       =label_tag :card_month, "Card Expiration" 
       =select_month nil, {add_month_numbers: true}, {name: nil, id: "card_month"} 
       =select_year nil, {start_year: Date.today.year, end_year: Date.today.year+15}, {name: nil, id: "card_year"} 
      %div#stripe_error 
       %noscript JavaScript is not enabled and is required for this form. First enable it in your web browser settings. 
    .actions 
     =f.submit((defined?(editing) ? "Update" : "Sign Up")) 

以下是错误:

compile error 
/Users/brianjoseff/rails_projects/groupie/app/views/users/_form.html.haml:3: syntax error, unexpected kELSE 
/Users/brianjoseff/rails_projects/groupie/app/views/users/_form.html.haml:23: syntax error, unexpected kELSE 
/Users/brianjoseff/rails_projects/groupie/app/views/users/_form.html.haml:25: syntax error, unexpected tSYMBEG, expecting kDO or '{' or '(' 
...d_tag :card_number, nil, name:nil 
          ^
/Users/brianjoseff/rails_projects/groupie/app/views/users/_form.html.haml:27: syntax error, unexpected tSYMBEG, expecting kDO or '{' or '(' 
...eld_tag :card_code, nil, name:nil 
          ^
/Users/brianjoseff/rails_projects/groupie/app/views/users/_form.html.haml:30: odd number list for Hash 
...month nil, {add_month_numbers: true}, {name: nil, id: "card_... 
          ^
/Users/brianjoseff/rails_projects/groupie/app/views/users/_form.html.haml:30: syntax error, unexpected ':', expecting '}' 
...month nil, {add_month_numbers: true}, {name: nil, id: "card_... 
          ^
/Users/brianjoseff/rails_projects/groupie/app/views/users/_form.html.haml:30: odd number list for Hash 
...d_month_numbers: true}, {name: nil, id: "card_month"} 
          ^
/Users/brianjoseff/rails_projects/groupie/app/views/users/_form.html.haml:30: Can't assign to nil 
...th_numbers: true}, {name: nil, id: "card_month"} 
          ^
/Users/brianjoseff/rails_projects/groupie/app/views/users/_form.html.haml:30: syntax error, unexpected ':', expecting '=' 
...umbers: true}, {name: nil, id: "card_month"} 
          ^
/Users/brianjoseff/rails_projects/groupie/app/views/users/_form.html.haml:30: syntax error, unexpected '}', expecting ')' 
/Users/brianjoseff/rails_projects/groupie/app/views/users/_form.html.haml:37: syntax error, unexpected kENSURE, expecting $end 
...Util.html_safe(_erbout);ensure;@haml_buffer = @haml_buffer.u... 
          ^

感谢所有

更新1 ...新的形式,而不JavaScript数组符号:

=if 
    %h1 Sign up 
=else 
    %h1 Edit 
=form_for(@user) do |f| 
    =render "shared/error_messages", :target => @user 
    =f.hidden_field :stripe_card_token 
    %dl 
     =if signed_in? 
      %dt.field=f.label :avatar 
      %dd.field=f.file_field :avatar 
     %dt.field=f.label :name 
     %dd.field=f.text_field :name 
     %dt.field=f.label :email 
     %dd.field=f.text_field :email 
     =if @user.new_record? 
      %dt.field=f.label :password 
      %dd.field=f.password_field :password 
     =if @user.stripe_card_token.present? 
      %p Credit card has been provided. 
     =else 
      %div.field 
       =label_tag :card_number, "Credit Card Number" 
       =text_field_tag :card_number, :name => nil 
      %div.field 
       =label_tag :card_code, "Security Code on Card (CVV)" 
       =text_field_tag :card_code, :name => nil 
      %div.field 
       =label_tag :card_month, "Card Expiration" 
       =select_month nil, {:add_month_numbers => true}, {:name => nil, :id => "card_month"} 
       =select_year nil, {:start_year => Date.today.year, :end_year => Date.today.year+15}, {:name => nil, :id => "card_year"} 
      %div#stripe_error 
       %noscript JavaScript is not enabled and is required for this form. First enable it in your web browser settings. 
    .actions 
    =f.submit((defined?(editing) ? "Update" : "Sign Up")) 

=语句

您使用Javascript数组表示法中HAML。 HAML使用Ruby来评估=(表达):

因此,这是错误的:

= select_month nil, {add_month_numbers: true}, {name: nil, id: "card_month"} 

应该是:

= select_month nil, { :add_month_numbers => true}, { :name => nil, id => "card_month" } 

Else语句

的代码行不产生输出,所以使用 - 而不是=

- if 
    %h1 Sign up 
- else 
    %h1 Edit 
+0

好吧,让我看看如果改变,得到的东西工作 – Brian 2011-12-23 06:41:13

+0

好吧,错误的数量已经减少,但我仍然在第三行出现'编译错误'...语法错误,意外的kELSE'。我已编辑的问题,包括编辑的形式,取出JavaScript数组符号 – Brian 2011-12-23 06:47:39

+0

生病的胡子btw – Brian 2011-12-23 06:49:14