0

我正在使用以下内容来呈现集合:

<%= render :partial => 'mini_release', collection: group, as: :r %>

以及以下路线:

constraints(domain: /[a-zA-Z0-9-]+/i, page: /[0-9]+/, :format => 'html') do
    get ':domain', :to => 'sites#show', as: :site
    get ':domain/releases(/p-:page)', :to => 'sites#releases', as: :site_releases, :constraints => { :format => /(json|html)/ }
    get ':domain/release/:release_id', :to => 'sites#release', as: :site_release
end

到目前为止一切都很好,路由工作和渲染工作。但是,当在部分“mini_release”中调用下面的路径时,它会构建一个不正确的 url:

<%= link_to site_release_path(:domain => r.site.domain, :release_id => r), :class => 'col-xs-6' do %>

Wherer是一个模型Release并且有一个Site(它有一个属性domain)。

就构建的 URL 而言,生成的 URL 是正确的。但该:domain部分始终不正确,并且是当前模型对象。

例如,假设我当前所在的页面是:/site-one/release/my-release/并且我正在渲染部分,所有部分的结果都是/site-one/release/the-correct-slugs,当它们应该是/some-other-site/release/the-correct-slugs。我已经为路线尝试了多种格式 - 有和没有变量关联 - 但没有一个工作。似乎该路线正在采用当前路线:domain参数而不是给定的参数。

如何确保路线停止查看当前:domain参数?

这可能与此https://github.com/rails/rails/issues/9829有关

4

2 回答 2

3

显然 rails 不喜欢参数 name :domain。我将其重命名为:domain_id,一切正常。

于 2013-08-26T14:53:09.487 回答
0

这实际上应该与您计算域的方式相关联

您可以检查(例如通过在页面上打印或使用调试器) r.site.domain 返回正确的域吗?

这可能与路线无关。

编辑

如果 r.site.domain 在部分中返回您想要的内容,那么它是否与域参数的约束有关。r.site.domain 返回的字符串是否通过了约束?

于 2013-08-24T11:18:31.873 回答