无法在选择表格中找出Has_many

时间:2012-04-27 16:38:43

标签: ruby-on-rails ruby-on-rails-3 has-many

我正在尝试创建一个简单的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。

1 个答案:

答案 0 :(得分:0)

我看不到特定的错误。没有必要使用:foreign_key => "position_id"定义foreign_key,但它不会受到伤害。我只是想知道如果表单中只有一个选择框,你的日志("education_ids"=>["", "1", "2"])中有多个ID?如果您想为一个“位置”分配多个“教育”,您可能想查看关于updating through checkboxes的railscast。关于rails form helpers的指南也可能提供一些有价值的提示。数组["", "1", "2"]中传递的第一个id为空,这可能会导致问题。