1

这可能是 Ruby 专业人士的一个答案。我收到语法错误:

unexpected tLBRACE  at line 1

我相信这与此处描述的问题密切相关,但我无法弄清楚我的情况有什么问题。

有人可以指出什么问题吗?感谢您的时间。

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'
4

1 回答 1

3

我敢打赌,您使用的是早于 2.0 的 Ruby 版本。

在第一行,您使用关键字 arguments定义了方法。您获得的错误通常是在使用早期 Ruby 版本(例如 1.9)时出现的错误。哈希语法 'size:' 在这些版本的参数列表中,这是一个意外的语法。

在 Ruby 1.9 中,您应该如下定义方法:

def user_profile_picture(user,  size=[50, 50], type=:square, style='img-polaroid', opts={})
  #...
end
于 2013-04-11T08:13:34.460 回答