所以基本概念是,我想要一个如此路由的应用程序:
http://host/subscriptions/my@email.com/new # create a new subscription
http://host/subscriptions/my@email.com/7/ # view the subscription with id 7
现在,我发现的典型导航方式是使用ID,我在SO和其他博客周围看过如何使用用户名,但是没有找到任何电子邮件地址,对我来说,我不会认为他们的行为不同,但他们似乎无法得到相同的结果。
现在,我已经尝试过多种方法,而且我现在最接近我的结果,现在我只需要SO来帮忙!
在我的路线档案中 -
routes.rb:
----------
SubscriptionCenter::Application.routes.draw do
resources :subscriptions, :constraints => { :id => /[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}/ }
resources :subscribers
resources :batches
resources :batch_runs
...
正如您在此处所见 - 我将我的电子邮件地址视为ID。我正在使用电子邮件地址正则表达式,但工作正常,但对我来说这很脏。
我的模型看起来像
class Subscription < ActiveRecord::Base
attr_accessible :batch_id, :subscriber_id
...
表示要订阅的批次的批次ID,以及表示我拥有的另一个型号的subscriber_id -
class Subscriber < ActiveRecord::Base
attr_accessible :id, :email_address
...
所以我的问题 -
在我的控制器中,我正在使用
params[:id]
获取电子邮件地址。
match 'subscriptions/:id/new', :to => 'subscription#new'
http://host/subscriptions/my@email.com/7/
。如果我继续使用params[:id]
来收发电子邮件,我最终会如何获取7? 7表示batch_id列