通过相关对象的id路由到对象

时间:2012-01-25 23:39:23

标签: ruby-on-rails ruby-on-rails-3.1 routes

Hej伙计,

我目前完全坚持以下内容,甚至没有任何想法如何继续,所以任何帮助我的Rails 3(.1)-app将不胜感激:

我有一个“document_type”可以“有很多”(版本)“文档”,可以通过一个简短的URL访问,类似于domain.com/d<id of form> - 如同domain.com/d12的文档一样id 12.到目前为止没什么特别的。但现在我被要求更改(或更准确地说是添加)允许通过document_type的id和文档的id domain.com/t2v3(或类似的东西)进行访问的路由,其中​​“2”是document_type_id和“3” “作为文件的版本(文件表中的o / c)。

我得到的代码(以防万一......)是:

match 'd:id', :controller => 'documents', :action => 'show', :id => 'id'

我无法弄清楚如何(或者甚至......)这可以做到......

tyia!

2 个答案:

答案 0 :(得分:1)

如果网址的格式灵活,我会更改它:domain.com/t2/v3

然后你的路线看起来像:

get 't:type_id/v:version_id', :to => 'documents#show_version'

答案 1 :(得分:0)

t另一种方法可能是让您的路线尽可能简单:

get ':id', :controller => 'documents', :action => 'show'

然后您可以使用friendly_id将“默认”整数标识符替换为“友好”整数标识符。

class Document < ActiveRecord::Base
  extend FriendlyId

  friendly_id :doc_id, :use => :slugged

  def doc_id
    "t#{id}v#{version}"
  end
end

更多关于这个有用的宝石:http://rubydoc.info/github/norman/friendly_id/master/file/Guide.rdoc