以下を使用してコレクションをレンダリングしています。
<%= 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