生态与声明如果

时间:2014-01-10 18:28:56

标签: ruby-on-rails backbone.js coffeescript partial-views eco

这是Eco,问题是它应该为部分模型(骨干)添加部分按钮,但是如果没有工作则可以使用。变量是可访问的,但owner.id是字符串而current_user.id是一个数字

<% if @owner?.id is current_user.id: %>
    <div class="info-add">
       <button class="button secondary tiny radius">
           <i class="fi-plus"></i>
           Add
       </button>
   </div>
<% end %>

1 个答案:

答案 0 :(得分:1)

Eco使用CoffeeScript作为模板语言,在CoffeeScript中,is==在JavaScript版本中成为===。 JavaScript的strict equality operator (===)不执行==将执行的类型转换,即使'6' === 6为真,'6' == 6也是假的。

你这么说:

  

owner.id a是字符串,current_user.id是数字

所以@owner.id is current_user.id总是假的。

如果您的客户端代码生成id字符串,那么它就会被破坏,您应该修复它。如果您的服务器以字符串形式发送@owner.id,那么您的服务器已损坏,您应修复服务器以发送正确的JSON;如果您无法修复服务器代码,那么您可以在模型中添加parse方法来为您修复它:

parse: function(response) {
    if(response.id)
        response.id = +response.id // or parseInt(response.id, 10) if you prefer
    return response;
}