简单表单选择显示错误的值

时间:2015-08-12 15:22:48

标签: ruby-on-rails simple-form

我正在使用Simple Form for rails 4,我正在尝试使用belongs_tohas_many方法显示基于模型的表单。但是,我的模型覆盖了名称约定,因为我使用的是旧版DB:

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 %>

Butit显示以下值而不是“Zona”的名称 enter image description here

1 个答案:

答案 0 :(得分:0)

您应该在Zone模型中定义to_s方法,返回名称或类似名称的内容(我不知道此列的名称是什么,假设它是zone_name)。

class Zone < ActiveRecord::Base
  def to_s
    "The #{zone_name}"
    # attribute that return column name
  end
end

<%= f.association :zona %>在您的表格区域id中使用2列,如果未在第二个列中提供,则使用模型"#<Zone:0x000000064e1e88>"的字符串表示形式。

其他方法是为f.assocation(...)方法添加更多选项。

f.association :zone, label_method: :zone_name, value_method: :id, include_blank: false