我正在尝试创建一个简单的 has_many 关系,然后使用表单进行更新。在此先感谢您的帮助。
楷模
class Position < ActiveRecord::Base
#position attributes
has_many :educations, :foreign_key => "position_id"
class Education < ActiveRecord::Base
belongs_to :position
EDUCATION_CHOICES = ([["Undergrad", "0"],["Master", 1],["PHD", 2]])
教育数据模型有 PK (auto)、position_id、education_value 和时间戳。education_value 用于存储来自 EDUCATION_CHOICES 的值
startupfeeder_dev=# 从教育中选择 *; 编号 | position_id | 教育价值 | created_at | 更新时间 ----+--------------+-----------------+------------- ---------------+---------------- 3 | 11 | 1 | 2012-04-27 08:26:28.077517 | 2012-04-27 16:27:50.330082 1 | 12 | 1 | 2012-04-27 00:40:22.868336 | 2012-04-27 16:30:07.123653 2 | 12 | 2 | 2012-04-27 00:45:06.613306 | 2012-04-27 16:30:07.127601 (3 行)
形式:
<%= f.select(:education_ids, Education::EDUCATION_CHOICES,{ :prompt => "Please select"},
{ :multiple => true, :size => 5 }) %>
位置控制器:
@position = Position.new(params[:position])
标准,尚未添加任何内容。
我手动添加了一些数据,结果很好。
但是更新和创建没有正确映射。
这是我在日志中得到的:
Processing by PositionsController#create as HTML
参数:{"position"=>{"title"=>"test13", "education_ids"=>["", "1", "2"], "description"=>"test13"}, "commit"= >“创建职位”,“authenticity_token”=>“XZRsnWTKkpprCOfmekOuXdPFKbZea1bfckCsLgG3/go=”,“utf8”=>“\342\234\223”}教育负载(0.9ms)选择“教育”。*从“教育”WHERE“教育"."id" IN (1, 2)
我认为我的问题出在我拥有的 f.select 中:education_ids,它应该映射到education_values。