目前,我们正在使用 method_missing 在我们的控制器中捕获对 SEO 友好操作的调用,而不是为变量的每个可能值创建操作。我们想要的是这样的 URL:
/学生/鲍勃史密斯
而不是 /students/show/342
有比 method_missing 更清洁的解决方案吗?
谢谢!
目前,我们正在使用 method_missing 在我们的控制器中捕获对 SEO 友好操作的调用,而不是为变量的每个可能值创建操作。我们想要的是这样的 URL:
/学生/鲍勃史密斯
而不是 /students/show/342
有比 method_missing 更清洁的解决方案吗?
谢谢!
您可以创建一个包罗万象的路线。将它放在config/routes.rb的底部,使用您想要的任何控制器和操作:
map.connect '*path', :controller => '...', :action => '...'
路由的段将可用于params[:path]
阵列中的控制器。
您可以很容易地为该特定格式定义路线。
map.connect "/students/:name", :controller => :students, :action => :show, :requirements => {:name => /[A-Z][A-Z]+/}
然后在您的表演动作中,您可以使用 params[:name] 按名称查找。