这可能是 Ruby 专业人士的一句话回答。我收到语法错误:
unexpected tLBRACE at line 1
我认为这与 described here 中的问题密切相关但我无法弄清楚我的情况出了什么问题。
有人可以指出问题所在吗?感谢您的时间。
def user_profile_picture(user, size: [50, 50], type: :square, style: 'img-polaroid', opts: {})
tag :img,
{ width: ("#{size[0]}px" if size),
height: ("#{size[1]}px" if size),
src: facebook_profile_picture(user, type),
alt: '',
class: [('verified' if user.class == User.model_name && user.facebook_verified?), style].compact.join(' ')
}.merge(opts)
end
ruby 1.9.3p327(2012-11-10 修订版 37606)[x86_64-darwin11.4.0]
****堆栈跟踪****
SyntaxError - /Developer/rails-workspace/roommate/app/helpers/users_helper.rb:7: syntax error, unexpected tLABEL
...er_profile_picture(user, size: [50, 50], type: :square, sty...
... ^
/Developer/rails-workspace/roommate/app/helpers/users_helper.rb:7: syntax error, unexpected ',', expecting keyword_end
..._picture(user, size: [50, 50], type: :square, style: 'img-p...
... ^
/Developer/rails-workspace/roommate/app/helpers/users_helper.rb:7: syntax error, unexpected ',', expecting keyword_end
...:square, style: 'img-polaroid', opts: {})
... ^
/Developer/rails-workspace/roommate/app/helpers/users_helper.rb:10: syntax error, unexpected ',', expecting keyword_end
/Developer/rails-workspace/roommate/app/helpers/users_helper.rb:11: syntax error, unexpected ',', expecting keyword_end
/Developer/rails-workspace/roommate/app/helpers/users_helper.rb:12: syntax error, unexpected ',', expecting keyword_end
/Developer/rails-workspace/roommate/app/helpers/users_helper.rb:15: syntax error, unexpected '}', expecting keyword_end
}.merge(opts)
^
/Developer/rails-workspace/roommate/app/helpers/users_helper.rb:127: syntax error, unexpected keyword_end, expecting $end:
app/helpers/users_helper.rb:7:in `'
(gem) activesupport-3.2.9/lib/active_support/dependencies.rb:469:in `block in load_file'
(gem) activesupport-3.2.9/lib/active_support/dependencies.rb:639:in `new_constants_in'
(gem) activesupport-3.2.9/lib/active_support/dependencies.rb:468:in `load_file'
我敢打赌,您使用的是早于 2.0 的 Ruby 版本。
在第一行,您使用 keyword arguments 定义了方法.您遇到的错误通常是在使用早期 Ruby 版本(例如 1.9)时出现的错误。散列语法“size:”在那些版本的参数列表中是一个意想不到的语法。
在 Ruby 1.9 中,你应该定义如下方法:
def user_profile_picture(user, size=[50, 50], type=:square, style='img-polaroid', opts={})
#...
end
我是一名优秀的程序员,十分优秀!