2011-04-29 33 views
3

我想打電話從不同的控制器的視圖的行動:的Rails 3:如何使從另一個控制器的視圖動作

控制器Countries有一個名爲selectbox的動作產生的所有國家作爲一個HTML選擇框部分。
控制器Customers有一個名爲new的動作,它爲所有客戶屬性生成html表單。我想以這種形式從Countries#selectbox插入選擇框。

什麼是正確的方法來實現這一目標?

回答

1

對於你在做什麼,提取代碼到輔助方法是正確的方法來做到這一點。然而,如果你仍然想使用時的動作從另一個,這是官方Rails插件,你可以使用:

https://github.com/rails/render_component

2

你做錯了。如果有一段代碼需要重用(例如html選擇框生成),則應將其放入助手中和/或使用partial來呈現html選擇框部分。

請記住,如果代碼有些複雜(比如說多於一行或兩行),這只是一個很好的建議。這裏有一個帖子,我發現雖然谷歌搜索可能會幫助你:helper or partial

+0

感謝您的鏈接。我決定在部分代碼中保留我的代碼。但還有一個問題:我想通過AJAX重用選擇框,因此部分屬於控制器的「國家/地區」。有沒有辦法從另一個控制器的視圖中調用一個動作? – silent 2011-04-29 12:38:40

+0

@silent檢出一個名爲'cells'的gem,或google for'rails cells' – 2011-04-30 17:28:44

相關問題