我正在尝试创建一个简单的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和timestamps。 education_value用于存储EDUCATION_CHOICES
中的值startupfeeder_dev=# select * from educations; id | position_id | education_value | created_at | updated_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 rows)
形式:
<%= 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”=&gt; {“title”=&gt;“test13”,“education_ids”=&gt; [“”,“1”,“2”],“description”=&gt;“test13 “},”commit“=&gt;”创建位置“,”authenticity_token“=&gt;”XZRsnWTKkpprCOfmekOuXdPFKbZea1bfckCsLgG3 / go =“,”utf8“=&gt;”\ 342 \ 234 \ 223“} 教育负荷(0.9ms)选择“教育”。*来自“教育”WHERE“教育”。“id”IN(1,2)
我认为我的问题出在我所拥有的f.select中:education_ids,它应该映射到education_values。
答案 0 :(得分:0)
我看不到特定的错误。没有必要使用:foreign_key => "position_id"
定义foreign_key,但它不会受到伤害。我只是想知道如果表单中只有一个选择框,你的日志("education_ids"=>["", "1", "2"]
)中有多个ID?如果您想为一个“位置”分配多个“教育”,您可能想查看关于updating through checkboxes的railscast。关于rails form helpers的指南也可能提供一些有价值的提示。数组["", "1", "2"]
中传递的第一个id为空,这可能会导致问题。