如何将Rails 3路由参数绑定到params散列中的嵌套值?

时间:2011-08-25 04:11:19

标签: ruby-on-rails ruby-on-rails-3

我想有这样的路线

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

绑定:sms_confirmation_code param,如下例所示:

users/sms_confirmation/ABC123的请求会导致params哈希包含

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

目前路线给了我:

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

到目前为止,我无法通过Rails 3路由找到一种方法。有没有办法实现这个目标?

解决这个问题很容易,但如果不必要,我不想这样做。

更新:sms_confirmation_code是users表中的字段。我的目标是使用漂亮的URL,例如上面示例中的URL,而不是附加到URL的查询字符串。我还想避免控制器中的额外代码来构造如上所述的散列。

1 个答案:

答案 0 :(得分: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

告诉我它是否有效!