2012-04-27 52 views
0

我想創建一個簡單的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(自動),position_id,education_value和時間戳。 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 

參數:{ 「位置」=> { 「標題」=> 「test13」, 「education_ids」=> [ 「」, 「1」 ,「2」],「description」=>「test13」},「commit」=>「Create Position」,「authenticity_token」=>「XZRsnWTKkpprCOfmekOuXdPFKbZea1bfckCsLgG3/go =」,「utf8」=>「\ 342 \ 234 \ 223 「} 教育負荷(0.9毫秒)選擇」教育「。*從」教育「在哪裏」教育「。」ID「IN(1,2)

我想我的問題是在f.select我有:education_ids,它應該映射到education_values。

+0

編輯表格代碼以包括多選 – 2012-04-27 17:12:36

回答

0

我看不到特定的錯誤。應該沒有必要用:foreign_key => "position_id"來定義foreign_key,但它不會造成傷害。如果您的表單中只有一個選擇框,我只是想知道如何在日誌中使用多個ID("education_ids"=>["", "1", "2"])?如果你想爲一個「職位」分配多個「教育」,你可能想查看關於updating through checkboxes的railscast。關於rails form helpers的指南也可能提供一些有價值的提示。數組["", "1", "2"]中傳遞的第一個ID是空的,這可能會導致問題。

+0

你是對的。我最近在代碼中添加了多選項,並沒有更新粘貼的代碼。 – 2012-04-27 17:13:05