【发布时间】:2017-02-19 02:48:00
【问题描述】:
我使用的是 Rails 4.2.7。我有这个部分
<%= @my_object_time.my_object.address.formatted %>
我在我的 app/models/address.rb 中定义了这个方法……
class Address < ActiveRecord::Base
belongs_to :state
belongs_to :country
has_one :user # , dependent: :destroy
has_one :race
def self.formatted
str = ""
if self.city && !self.city.empty?
str = "#{city}"
end
if self.state
str = str.empty? ? "#{state.iso}" : "#{str}, #{state.iso}"
end
if self.country
str = str.empty? ? "#{country.name}" : "#{str}, #{country.name}"
end
str
end
但是,当我调用部分时,我得到了这个错误
ActionView::Template::Error (undefined method `formatted' for #<Address:0x007fb062e31fb0>):
如何更正上述错误以执行我的方法的逻辑?我也尝试了“格式化”而不是“self.formatted”,但得到了同样的错误。
【问题讨论】:
-
方法
formatted是一个类方法。通过删除self,将其更改为实例方法,即def formatted
标签: ruby-on-rails ruby methods model partial