以下を使用してコレクションをレンダリングしています。
<%= 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 %>
どこrに のモデルがあり、モデルが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