0

我有一个具有多个版本的产品模型:

class Product < ActiveRecord::Base
  attr_accessible :name, :versions_attributes
  has_many :versions
  accepts_nested_attributes_for :versions, allow_destroy: true
end

class Version < ActiveRecord::Base
  attr_accessible :available_q, :kind, :product_id
  belongs_to :product
end

我想将available_q属性作为选择框呈现给(管理员)用户,选择“是”或“否”,当然我希望选择框显示版本数据库中当前的任何内容这个版本,但似乎无法让它做到这一点。以下是产品表单的视图代码部分,其中涉及关联模型的选择框:

<%= form_for(@product) do |f| %>
…
<%= f.fields_for :versions do |version| %>
<%= version.select :available_q, options_for_select([['Yes', 't'],['No', 'f']], version.object.available_q) %><br />
…
<% end %>
…

一切正常,除了当前选择框始终显示“是”,即使在使用“否”更新数据库后也是如此。我很可能忘记做一些非常简单的事情,但非常感谢任何帮助。

4

2 回答 2

0

我找到了一种解决方法:我遇到的困难似乎与使用:available_qwhich has booleandata type 有关。当我将其更改为string类型时,问题就消失了!

于 2013-10-18T20:44:23.253 回答
0
<%= version.select :available_q, options_for_select([['Yes', 't'],['No', 'f']], version.object.available_q == 't' ? 0 : 1) %>

你可以试试上面的解决方案。options_for_select 的第二个参数不是要显示的值,而是集合数组上的值的索引[['Yes', 't'],['No', 'f']]

于 2013-10-16T11:45:20.717 回答