这是我在我的路由中使用的。rb文件
match 'trackers/(:token)' => 'trackers#show'
resources :trackers do
resources :locations
end
是否在匹配语句下嵌套:locations
,因此位置的URL将使用跟踪器的令牌(这是一串字母和数字6长),而不是使用跟踪器的id?此外,我希望匹配语句工作,无论在URL中的字符的情况…所有标记都以1X开头,但如果有人输入1X,我仍然希望它能工作。我似乎无法破译语法/正则表达式,使其工作
您可以通过简单地将to_param
方法添加到Tracker
模型中来解决所有这些问题:
def to_param
token
end
那么你可以完全摆脱你的match
语句。使用tracker_path(tracker)
, edit_tracker_path(tracker)
等生成的所有链接将自动使用您的token
字段。
但是,请记住,即使它使用token
字段,您的表单仍将提交值为params[:id]
,而不是params[:token]
。