簡體   English   中英

語法錯誤,意外',',期待tCOLON2或'['或'。' 將課程分配給erb時

[英]syntax error, unexpected ',', expecting tCOLON2 or '[' or '.' when assigning a class to erb

在我的profile.html.erb文件中,每當我嘗試將類或id分配給erb時,我都會收到語法錯誤。 以下是一個例子:

<p>"<%= current_user.current_program.name, :id => 'progress' %>" Progress</p>

這給了我以下錯誤:

SyntaxError in Users#profile

Showing /.../app/views/users/profile.html.erb where line #13 raised:

/Users/.../app/views/users/profile.html.erb:13: syntax error, unexpected tASSOC, expecting tCOLON2 or '[' or '.'
...er.current_program.name, :id => 'progress' );@output_buffer....
...                               ^

我無法弄清楚語法錯誤是什么。 我完全難過了。

我們可以在獨立的Ruby中重現和簡化您的問題,如下所示:

require 'erb'
ERB.new("<p><%= name, :a => 'b' %></p>").run

產生錯誤:

SyntaxError: (erb):1: syntax error, unexpected tASSOC, expecting tCOLON2 or '[' or '.'
..."; _erbout.concat(( name, :a => 'b' ).to_s); _erbout.concat ...
...                               ^
    from /Users/phrogz/.../ruby/1.9.1/erb.rb:838:in `eval'
    from /Users/phrogz/.../ruby/1.9.1/erb.rb:838:in `result'
    from /Users/phrogz/.../ruby/1.9.1/erb.rb:820:in `run'
    from (irb):2
    from /Users/phrogz/.../bin/irb:16:in `<main>'

更簡單地說,將ERB排除在外:

a, :b=>'c'
#=> SyntaxError: (irb):3: syntax error, unexpected tASSOC, expecting tCOLON2 or '[' or '.'

你所擁有的不是有效的Ruby代碼。 你想做什么? :id => 'progress'哈希作為參數傳遞給.name方法? 如果是,則刪除逗號,並且(可選)包含括號以便清楚:

<p>"<%= current_user.current_program.name( :id=>'progress' ) %>" Progress</p>

如果您使用的是Ruby 1.9+,則可以使用更簡單的Hash-with-symbol-keys語法:

<p>"<%= current_user.current_program.name( id:'progress' ) %>" Progress</p>

但是,我似乎不太可能name方法采用這樣的哈希,所以我再次問:你真正想要完成什么? name方法返回什么,你想要什么HTML輸出?


猜測一下,也許您希望.name返回的文本包含在<span id="progress"> 如果是這樣,你必須這樣做:

<p>"<span id="progress"><%= current_user.current_program.name%></span>" Progress</p>

或者也許使用content_tag

<p><%= content_tag("span", current_user.current_program.name, id:'progress') %> Progress</p>

在Haml,這將是:

%p
  %span#progress= current_user.current_program.name
  Progress

也許如果刪除逗號它會起作用( current_user.current_program.name是一個以哈希作為參數的方法嗎?)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM