2010-01-08 59 views
0

我有字段b_id中的表B的外鍵到表B.現在我正在試圖添加新的表A條目進行查看/控制。在窗體中,我有組合框(通過collection_select),其中列出了表B中的所有元素,這就是我打算在A的創建方法中獲得A的新實例的b_id。帶外鍵的表的CRUD

組合框的值是設置爲所需B實例的ID。但是,如何將該值設置爲ecreate方法中新的A對象的b_id字段?無論我嘗試什麼,它總是空的,當然,我得到了例外。

回答

0

我不知道我跟着你的問題了,但是那聽起來像你可能想直接從PARAMS到新的一通ID對象的創建方法......是這樣的:

a = A.create(:b_id => params[:b_id], ...) 

這一切都取決於您在視圖中命名組合框的內容。如果你可以粘貼你的視圖的片段,那麼這將有助於


根據評論更新。

縱觀rails docscollection_select,它看起來像你不正確的數據傳遞到collection_select

+0

是的,這正是我想要的。 Combobox是這樣創建的: <%form_for(@opstina)do | f | %> ... <%= collection_select(:okrug,:id,@okrugs,:id,:naziv)%> Opstina的外鍵okrug_id爲Okrug。但我無法獲得所選的okrug_id。我試過類似params [:okrug_id]的東西,但它是零 – celicni 2010-01-08 02:17:26

+0

嘗試'collection_select(:opstina,:okrug_id,@okrugs,:id,:naziv)'或'f.collection_select(:okrug_id,@okrugs,:id, :naziv)' – 2010-01-08 03:15:12

+0

謝謝!它的工作原理與 f.collection_select(:okrug_id,@okrugs,:ID,:naziv) 問題發生,因爲我選擇的標籤看上去像這樣 <選擇的id = 「okrug_id」 NAME = 「梁州[ID]」> 它應該看起來像這樣 <選擇的id = 「opstina_okrug_id」 NAME = 「opstina [okrug_id]」> (錯誤ID) – celicni 2010-01-08 03:43:43

0

首先第一件事情,你有沒有宣稱B有許多作爲,而A屬於你的模型到B ? (編輯:原本是這些顛倒的)

class B < ActiveRecord::Base 
    has_many :as 
end 

class A < ActiveRecord::Base 
    belongs_to :b 
end 
+0

不,我還沒有(現在我添加的話) – celicni 2010-01-08 03:01:56

+0

好吧,你不應該如果你的請求中有'params [:b_id]',那麼就不需要其他任何東西。 – Ben 2010-01-08 03:05:26