1

我的申请有以下路线:

TravisLite::Application.routes.draw do
  resources :repositories, path: ':owner_name', only: %i[index show], param: :name, constraints: OwnerNameContraint do
    resources :builds, only: %i[index show]
    resources :jobs, only: %i[show]
  end
end

这允许我拥有诸如/travis-ci/travis-ci/builds/12345. 路由本身工作得很好,但我在生成页面的路径和 URL 时遇到了一些问题。

现在,为了链接到构建,我必须这样做:

repositories_build_path(owner_name: repository.owner_name, repository_name: repository.name, id: build.id)

我想做的是更像这样的事情:

repositories_build_path([repository, build])

有没有办法做到这一点,或者至少简化 URL 助手调用,而不更改我的 URL 方案?只要 URL 保持不变,我很乐意自己更改路线。

4

1 回答 1

0

作为记录,这就是我目前的做法,也可能是最好的做法:

我安装了draper,所以我BuildDecorator看起来像这样:

class BuildDecorator < Draper::Decorator
  def path
    h.repository_build_path(
      owner_name: object.repository.owner_name,
      repository_nane: object.repository.name,
      id: object.id,
    )
  end
end

我对其他路径也有类似的方法。这允许我在视图中执行以下操作:

link_to build.number, build.path
于 2013-07-17T01:29:50.637 回答