2013-10-15 26 views
0

所以這是一個學校項目。我們不必使用Ruby,但我決定一路學習一門新的語言。所以我的問題是:控制器創建方法屬於很多

我有一個資產,應該有製造商,位置和員工表的外鍵。它也有很多維護記錄。

class Asset < ActiveRecord::Base 
    belongs_to :manufacturer 
    belongs_to :location 
    belongs_to :employee 
    has_many :maintenances 
end 

我很努力去理解我將如何構建資產的創建方法?我有選擇框來選擇三個值,但我不知道如何正確地將它們與保存的資產相關聯。

這裏是選擇框:

<p> 
     <%= f.label :Manufacturer %> 
     <%= select_tag(:Manufacturer, options_from_collection_for_select(Manufacturer.all, :id, :name))%> 
    </p> 
    <p> 
     <%= f.label :Location %> 
     <%= select_tag(:Location, options_from_collection_for_select(Location.all, :id, :name))%> 
    </p> 
    <p> 
     <%= f.label :Employee %> 
     <%= select_tag(:Employee, options_from_collection_for_select(Employee.all, :id, :email))%> 
    </p> 

我現在掙扎了一段時間創建此。謝謝。

+0

請告訴我們您的選擇框。這將向我們展示他們如何將他們的價值傳遞給控制器​​,我們可以從那裏開始。 –

+0

從選擇框中添加代碼 – Ryan

回答

1

我認爲你需要使用foreign_id,而不是關聯名稱,根據rails文檔:「如果你使用select(或者類似的幫助器例如collection_select,select_tag)來設置belongs_to關聯,你必須傳遞名字外鍵(在上面的city_id中的示例)「

此外,此select_tag與其父窗體無關。選擇標記名稱屬性將是錯誤的。嘗試:f.select_tag(:employee_id, .....)

最後,你應該嘗試formtastic。當我需要在rails中呈現html表單時,我使用它 - 這是一個很好的時間保護程序。

+0

我會嘗試formtastic,但是,也許我看到的東西錯了,但它似乎像問題不一定是形式(所有下拉列表正確填充,我得到的數據在後側的形式就好了),但是如何編寫控制器的create方法,以便維護與表的關係。這就是我現在正在努力的事情。該表格看起來很好,效果很好。謝謝! – Ryan

+0

我不認爲它的視覺效果是你的問題,它是輸入的名稱屬性。什麼是軌道生成?它可能應該是'name ='asset [employee_id]「' –

0

你可以寫這樣的控制器操作(如果你與馬里奧的建議跟着一起過):

def create 
    @asset = Asset.create(:employee_id => params[:employee_id], :manufacturer_id ...) 
end