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 %>

どこ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

4

2 に答える 2

3

どうやらレールはパラメータ名が好きではありません: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 に答える