简单形式 select 显示错误值

Simple form select displays wrong values

我正在为 rails 4 使用简单表单,我正在尝试使用 belongs_tohas_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