关于ruby模型不访问属性的方法

时间:2013-09-03 13:52:34

标签: ruby-on-rails ruby

我有一个包含源URL的模型项

class Item < ActiveRecord::Base
    attr_accessible :name, :price, :priority,:picture,:url
    belongs_to :user

    validates :url, format: /(^$)|(^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?\/.*)?$)/ix
    validates_attachment_content_type :picture, :content_type => ['image/jpeg', 'image/png']

    #default_scope {where "completed<>trued"}

    def source
            hostname=@url.split('/')[2]
            hostname["www."]=""
            hostname


    end

end

我在indexview

中使用它
    <a href="<%=item.url%>"><%=item.source %></a>

所以我可以访问item.url。但是item.source抛出异常:

  

未定义的方法`split'代表nil:NilClass

我认为这是因为source方法没有访问url属性。我怎么做到这一点?我假设这是它应该如何工作在红宝石。我可能会犯错误

2 个答案:

答案 0 :(得分:2)

@url来自哪里? 也许你的意思是:

self.url

答案 1 :(得分:1)

删除@url尝试self.url.或仅url.,因为它是对象属性。