我有3個型號。用戶有多個投資組合和投資組合擁有多個資產。如何選擇3模型系統中的當前模型?
當用戶登錄時,通過find_by_id
使他成爲current_user
。他們第一次註冊時,會爲他們創建一個投資組合。這成爲current_portfolio。
接下來,他們可以創建投資組合,將他們重定向到他們所有投資組合的清單。點擊每個鏈接將使該組合成爲current_portfolio。
@current_portfolio = current_user.portfolios.find_by_id(params[:id])
的投資組合顯示視圖擁有資產的形式,使他們能夠迅速補充資產投資組合。這是我卡住的地方。由於資產表單位於資產組合show
視圖中,我的資產控制器需要引用current_portfolio,但這是在我的投資組合控制器中。
組合控制器:
def show
@current_portfolio = current_user.portfolios.find_by_id(params[:id])
@asset = @current_portfolio.assets.build
end
當提交表單時,它進入我的資產控制器Create
功能。 Create
不能簡單地擁有@current_portfolio
,因爲它位於不同的控制器上。我也不能使用find_by_id(params[:id])
,因爲:id
沒有提供任何東西。
當我有3個模型時,如何引用第二個模型? (對不起,我是一個新手...)
編輯更新:我以爲我找到了解決方案,但意識到它沒有奏效。
我在表單傳遞<%= hidden_field_tag :portfolio_id, params[:id]%>
並設置我的資產控制器創建要
def create
@asset = Asset.new(params[:asset])
@asset.save
end
,但它沒有得到portfolio_id這是在我的模型必填字段。在我看來
賽程表
<%= form_for(@asset) do |f| %>
<%= hidden_field_tag :portfolio_id, params[:id]%>
<%= f.text_field :asset_symbol %>
<%= f.text_field :shares %>
<%= f.text_field :cost %>
<%= f.text_field :purchase_date, :type=>'date' %>
<%= f.submit "+ Add to Portfolio" %>
<%end%>
爲什麼要存儲'current_portfolio'和'current_user'?你可以使用像'user/1/portfolio/45'這樣的資源嵌套,那麼當前的一個被它的id引用。 – 2013-03-06 04:25:23
@BenjaminUdinktenCate我實際上寫道,我用'find_by_id'存儲current_user,但實際上我用一個cookie存儲它,以便在一段時間不活動後將其記錄下來。我也使用它,以便current_user不能通過在URL中輸入來訪問投資組合。我從來沒有了解嵌套資源,但我現在一定會檢查它。我不需要存儲current_portfolio,我只需要能夠在提交將資產添加到該投資組合的表單時選擇current_portfolio。 – 2013-03-06 04:29:39
當您嘗試創建 – 2013-03-06 04:51:07