简单形式 select 显示错误值
Simple form select displays wrong values
我正在为 rails 4 使用简单表单,我正在尝试使用 belongs_to
和 has_many
方法显示基于模型的表单。但是,我的模型覆盖了名称约定,因为我使用的是旧版数据库:
class Almacen < ActiveRecord::Base
self.table_name = "CATALMA"
self.primary_key = "COD_ALM"
alias_attribute :COD_ZONA, :cod_zona
alias_attribute :zona_id, :cod_zona
belongs_to :zona
validates :NOM_ALM, presence: true
end
class Almacen < ActiveRecord::Base
self.table_name = "CATALMA"
self.primary_key = "COD_ALM"
alias_attribute :COD_ZONA, :cod_zona
alias_attribute :zona_id, :cod_zona
belongs_to :zona
validates :NOM_ALM, presence: true
end
表格中,相关部分是这样的:
<%= f.association :zona %>
但它显示以下值而不是 "Zona" 的名称
你应该在Zone
模型中定义一个to_s
方法,什么returns名称或类似的名称(我不知道这个列的名称是什么,假设它是zone_name
).
class Zone < ActiveRecord::Base
def to_s
"The #{zone_name}"
# attribute that return column name
end
end
<%= f.association :zona %>
在您的 table 区域中使用 2 列,id
如果没有提供第二列,则使用您的模型 "#<Zone:0x000000064e1e88>"
的字符串表示。
其他方法是向 f.assocation(...)
方法添加更多选项。
f.association :zone, label_method: :zone_name, value_method: :id, include_blank: false
我正在为 rails 4 使用简单表单,我正在尝试使用 belongs_to
和 has_many
方法显示基于模型的表单。但是,我的模型覆盖了名称约定,因为我使用的是旧版数据库:
class Almacen < ActiveRecord::Base
self.table_name = "CATALMA"
self.primary_key = "COD_ALM"
alias_attribute :COD_ZONA, :cod_zona
alias_attribute :zona_id, :cod_zona
belongs_to :zona
validates :NOM_ALM, presence: true
end
class Almacen < ActiveRecord::Base
self.table_name = "CATALMA"
self.primary_key = "COD_ALM"
alias_attribute :COD_ZONA, :cod_zona
alias_attribute :zona_id, :cod_zona
belongs_to :zona
validates :NOM_ALM, presence: true
end
表格中,相关部分是这样的:
<%= f.association :zona %>
但它显示以下值而不是 "Zona" 的名称
你应该在Zone
模型中定义一个to_s
方法,什么returns名称或类似的名称(我不知道这个列的名称是什么,假设它是zone_name
).
class Zone < ActiveRecord::Base
def to_s
"The #{zone_name}"
# attribute that return column name
end
end
<%= f.association :zona %>
在您的 table 区域中使用 2 列,id
如果没有提供第二列,则使用您的模型 "#<Zone:0x000000064e1e88>"
的字符串表示。
其他方法是向 f.assocation(...)
方法添加更多选项。
f.association :zone, label_method: :zone_name, value_method: :id, include_blank: false