[英]How to pass a default query param with Rails 2.3.x routing
我正在嘗試做一些瑣碎的事情。 我有一堆需要映射的URL,如下所示:
http://example.com/foo
http://example.com/foo/something
兩者都需要使用相同的控制器/動作。 我遇到的問題是調用http://example.com/foo
時,我需要指定一個默認查詢參數。 我認為這是:defaults哈希在routes.rb中的功能,但不幸的是,以下操作無效:
map.connect 'foo', :controller => 'something', :action => 'anaction',
:defaults => { :myparam => 'foobar' }
這應該將http://example.com/foo
路由到something控制器,anaction動作,並使params [:myparam]指向字符串“ foobar”。
對於第二個示例,我假設http://example.com/foo/something
,我需要一條附加路由。
解決這個問題的最佳方法是什么?
我不會通過將這樣的邏輯添加到路由文件來使事情復雜化,我只是在執行操作時這樣做:
params[:my_param] ||= 'foobar'
未經測試,但是:
map.connect 'foo', :controller => 'something', :action => 'anaction', :myparam => 'foobar'
看起來其中的:controller
和:action
參數沒有任何特殊之處,但最終變成了params
。 2.3.8文檔似乎證實了這一點。
更正式地說,您可以在路由中包括任意參數,因此:
map.connect ':controller/:action/:id', :action => 'show', :page => 'Dashboard'
這會將:page參數傳遞給與此路由匹配的所有傳入請求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.