我正在创建一个用引号跟踪客户的应用程序。客户有很多报价,一个属于一个客户。我试图使用一个结合名字和姓氏字段的方法来产生一个全名。我的代码如下。
客户模式:
class Customer < ActiveRecord::Base
has_many :quotes
def full_name
"#{FName} #{LName}"
end
end
引用form.html.erb
<div class="field">
<%= f.label :Customer_Name %><br>
<%= collection_select :Quote, :Customer_id, Customer.all, :id, :full_name, {}, {:multiple => true} %>
</div>
当我尝试创建一个新记录时,我会得到一个&#34;未初始化的常量Customer :: FName&#34;错误。有人可以建议吗?
答案 0 :(得分:1)
在Ruby中,任何以大写字母开头的标识符都是常量。
irb(main):001:0> FOO = 'bar'
=> "bar"
irb(main):002:0> FOO = 'baz'
(irb):2: warning: already initialized constant FOO
(irb):1: warning: previous definition of FOO was here
=> "baz"
irb(main):003:0>
因此,作为常量的类名是用camelcase(GhostWriter
)编写的,属性和方法通常用snake_case
编写。
实际常量全部用大写写成。
所以要把它们放在一起
class Square # the class name Square is a constant
SIDES = 4 # a constant
attr_accessor :height
attr_accessor :width
attr_accessor :background_color # attributes are written in snakecase
def area
@height * width
end
def get_point # so are method names.
end
end