![](/img/trans.png)
[英]Assigning a class in a .erb clause, “syntax error, unexpected tASSOC, expecting tCOLON2”
[英]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.