2010-10-07 19 views
-1

我使用了以下內容:如何使用動態類的.send方法轉到Rails中的特定路徑?

send("#{done_event.class.name.tableize}_path", done_event.id) 

一個例子是done_event是ContactEmail的一個具體實例。

我想這代表了路徑contact_email_path(done_event.id),這將轉化爲類似contact_emails/1

但是,結果我得到的是contact_emails.1

不知道該怎麼辦...?

我也得到這個錯誤時,我只是嘗試在對象傳遞:

http://localhost:3000/contact_calls.%23%3Ccontactcall:0x9fefb80%3E 

回答

1

這似乎這樣的伎倆:

send("#{done_event.class.name.tableize.singularize}_path", done_event) 

但如果多態的工作,我想利用這一點。

0

也許是這樣的:

eval("#{done_event.class.to_s.underscore}_path(done_event)") 
+0

eval與send之間的差異是什麼,我在用什麼? – Angela 2010-10-08 07:35:38

+0

nopt,不起作用...它將done_event當作一個對象來使用,所以它出來了contact_email。 Angela 2010-10-08 07:38:14

+0

然後只是把id改爲:eval(「#{done_event.class.to_s.underscore} _path(#{done_event.id})」) – Yannis 2010-10-08 11:54:38

0

嘗試polymorphic_url這樣

polymorphic_url([:contact_emails, done_event]) 

編輯:既然你不知道'done_event'這個類,你所要做的就是像這樣傳遞。

polymorphic_url(done_event) 
+0

但我不知道它是contadt_emails還是contag -calls ...這就是爲什麼它是動態的 – Angela 2010-10-08 07:35:23

+0

它仍然會很好。只需傳遞你喜歡的類名稱 – 2010-10-08 09:15:08

+0

對不起,我按了錯誤的鍵..我說你應該嘗試在 polymorphic_url([done_event.class.name,done_event])方法中傳遞類名 您可能需要使類名稱複數,使其工作。我猜,值得對它進行測試。 – 2010-10-08 09:22:41

相關問題