2011-08-25 57 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'键下。我想这样做,而不是诉诸超出路由定义的额外代码。 –