2011-04-08 42 views
0

所以我想根據@discussable類的類型動態地創建new_course_discussion_path(@discussable)或new_group_discussion_path(@discussable)。如何將消息(@discussable)傳遞給此方法?我嘗試過:Rails將消息傳遞給動態方法

"new_#{@discussable.class.to_s.downcase}_discussion_path".constantize(@discussable) 

但這說「參數的錯誤數量(1爲0)」。我是新來的鐵軌。請幫忙!謝謝。

更新: 眼下,整機線條

= link_to '>New Discussion', "new_#{@discussable.class.to_s.downcase}_discussion_path".constantize(@discussable) 

回答

2
send "new_#{@discussable.class.to_s.downcase}_discussion_path", @discussable 

的路徑助手是方法不類。他們可以從控制器,視圖和幫助器方法訪問,如果您不符合send調用的條件,它將調用自己的方法。

+0

謝謝。但它不起作用。這裏是它所說的:語法錯誤,意外的tSTRING_BEG,期待keyword_do或'{'或'(' ... nk_to'>新討論',發送「新_#{@ discussable.class.to_s ... 他們整體行是:'= link_to'>新的討論',發送「new_#{@discussable.class.to_s.downcase}_discussion_path」,@discussable' – randomor 2011-04-08 02:44:25

+0

你的方式嵌入調用發送另一個方法調用,你需要(包括...),發送(...,@討論)' – 2011-04-08 02:48:31

+0

是的!解決了這個問題。非常感謝Paul! – randomor 2011-04-08 02:51:46

1

您在查找Object.send method

+0

謝謝。但我盯着obj.send(symbol [,args ...])→obj 3分鐘,仍然無法連接解決方​​案和文檔。我想我仍然太淺,不能瀏覽文檔。 – randomor 2011-04-08 02:57:29