2013-08-20 32 views
0

我向用戶展示了他們創建的資產列表。它們可以是不同的類,每個類都有一個編輯按鈕。Rails:多類方法

根據類是什麼來編寫一個方法將用戶帶到正確的編輯表單的最佳方式是什麼?

像這樣的事情是我在想什麼:

def edit_asset(class, id) 
    if class == 'Photo' 
    redirect_to edit_photo_url(id) 
    elsif class == 'Audio' 
    redirect_to edit_audio_url(id) 
    elsif ... 
    ... 
    end 
end 

有沒有更好的方式來做到這一點?這個方法應該放在哪裏?謝謝!

編輯

我忘了提,類既可以是類或子類。

回答

2

實際上你可以做link_to 'Edit', [:edit, @object],假設@object被列爲你的路由文件中的一個資源。

+0

不知道你能做到這一點。這不能管理子類,可以嗎? –

+1

不確定。在控制檯中嘗試'app.url_for [:edit,Subclass.first]'並查看。 – bgates

+0

工作正常,但將父類的路由傳遞給子類。 –

0

如何在rails中使用polymorphic_url?你可以搜索它的API。

redirect_to polymorphic_url(yourclassname.constantize.find(yourid), action: 'edit') 
0

你可以這樣做:

def edit_asset(class, id) 
    redirect_to send("edit_#{class.lowercase}_url", id) 
end