属性名称中的破折号未获取NoMethodError

时间:2012-04-22 17:44:25

标签: ruby-on-rails-3 linkedin erb

我使用Linkedin gem来获取RoR 3的个人资料信息。

一切都有效,除非我到达名称中带破折号的房产。

<%=position.title %>正确显示,但<%= position.start-date %>NoMethodError - Users#show中返回undefined method start

我尝试过不同的操作,例如&#34; startDate&#34;,&#34; start_date&#34;,引用&#34;开始日期&#34;但没有一个有效。

是否有正确的方法来逃避属性名称中的破折号/连字符?

2 个答案:

答案 0 :(得分:0)

ERB中的表达式将被解析为从调用position函数的start()方法的结果中减去日期变量的值。连字符在Ruby中的标识符中无效。

我不熟悉LinkedIn gem提出的解决方案,除了说因为它基于XML API,你应该寻找一种手动从标签对中提取数据的方法。大多数相似的宝石都提供这样的方法。此外,这是使用IRB作为探索工具的一个很好的案例:启动IRB会话,看看在正确创建位置变量之后调用position.methods时会发生什么。我的猜测是,你会在列表中看到一些暗示答案的内容。

答案 1 :(得分:0)

看起来它会返回一个Hashie :: Mash,它会转换键,并带有一些额外的规则: https://github.com/pengwynn/linkedin/blob/master/lib/linked_in/mash.rb

你说你已经尝试position.start_date了吗?这应该工作。但如果没有,您是否尝试position['start-date']position['start_date']其中一个也应该有效,因为它是一个Mash。