2010-06-15 25 views
0

目前我們正在使用method_missing來調用我們控制器中對搜索引擎優化友好行爲的調用,而不是爲變量的每個可以想到的值創建操作。我們要的是URLS這樣的:使用Rails沒有method_missing獲取SEO友好的URL?

/學生/ BobSmith

和NOT /學生/顯示/ 342

難道還有比method_missing的一個清潔的解決方案?

謝謝!

回答

0

您可以很容易地爲該特定格式定義路由。

map.connect "/students/:name", :controller => :students, :action => :show, :requirements => {:name => /[A-Z][A-Z]+/} 

然後在您的show動作中,您可以使用params [:name]按名稱查找。

+0

這隻適用於名稱是唯一的。如果不是,那麼你應該在名字前面加上學號。像「/ students/342-Bob-Smith」和map.connect「/ students /:id」。然後,只需執行params [:id] .to_i即可獲取學生的ID。 – 2010-06-15 20:19:30

+0

這看起來好像接近我想要的。實質上,這會將當前登錄名移入不同的方法,然後在缺少方法時將method_missing保留爲打開狀態。 – tesserakt 2010-06-16 03:27:57

+0

是的,請記住,他們確實必須是獨一無二的邁克爾提到,但我真的無法想象,有任何你不能做的路線文件,必須使用方法丟失。你可能想查找ActiveRecord :: Base.to_param方法,以及如何創建seo友好的網址。 – 2010-06-16 05:20:24

0

您可以創建一個全部通路。將這個在的config/routes.rb中你想要的任何控制器和行動底部:

map.connect '*path', :controller => '...', :action => '...' 

路由的部分將提供給您的params[:path]陣列控制器。

+0

如果控制器中有其他動作會怎麼樣?這是否會覆蓋這些? – tesserakt 2010-06-16 03:26:35