簡體   English   中英

如何使用Rails 2.3.x路由傳遞默認查詢參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM