単純な 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]])
Education データ モデルには、PK (auto)、position_id、education_value、およびタイムスタンプがあります。education_value は、EDUCATION_CHOICES からの値を格納するためのものです。
startupfeeder_dev=# select * 教育から; ID | position_id | 教育値 | 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行)
形:
<%= 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"= >"Create Position", "authenticity_token"=>"XZRsnWTKkpprCOfmekOuXdPFKbZea1bfckCsLgG3/go=", "utf8"=>"\342\234\223"} Education Load (0.9ms) SELECT "educations".* FROM "educations" WHERE "教育"."ID" IN (1, 2)
私の問題は、:education_ids がある f.select にあると思います。これは、education_values にマップする必要があります。