2011-08-25 53 views
1

我想有這樣如何將Rails 3路由參數綁定到params散列中的嵌套值?

get "users/sms_confirmation/:sms_confirmation_code" => "users#sms_confirmation" 

綁定路線的:sms_confirmation_code PARAM如以下示例:

users/sms_confirmation/ABC123結果的請求中含有

{:user => {:sms_confirmation_code => "ABC123"}} # This is what I want 

目前的params散列路線給我:

{:sms_confirmation_code => "ABC123"} # This is what I've got. 

截至目前爲止,我無法找到一種方法來完成這與Rails 3路由。有沒有辦法做到這一點?

解決此問題很容易,但如果不必要,我不想這樣做。

UPDATE:sms_confirmation_code是用戶表中的一個字段。我的目標是使用諸如上述示例中的漂亮URL而不是附加到URL的查詢字符串。我也想避免控制器中的額外代碼來構造像上面描述的散列。

回答

0

sms_confirmation嵌套在用戶權限下嗎?

不應該是users/123/sms_confirmation/ABC123之類的東西嗎?

resources :users do 
  resources :sms_confirmation do 
    get "users/:user_id/sms_confirmation/:sms_confirmation_code" => "users#sms_confirmation" 
  end 
end 

,如果你沒有一個用戶控制器,你可以使用一個命名空間,如

namespace "users" do 
resources :sms_confirmation do 
    get "sms_confirmation" => "users#sms_confirmation" 
end  
end 

告訴我,如果它的工作!

+0

也許我對這個問題的措辭不是很清楚,請看更新。我不是說sms_confirmation是嵌套資源,而是我想''sms_confirmation =>「ABC123」嵌套在'params'哈希的':user'鍵下。我想這樣做,而不是訴諸超出路由定義的額外代碼。 –