2013-08-24 89 views
0

我用下面呈現一個集合:的Rails:路線忽略參數

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

rRelease模型,並具有一個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

回答

3

顯然rails不喜歡參數名:domain。我將它重命名爲:domain_id,一切正常。

0

這實際上應該被鏈接的方式你的計算

你可以檢查(通過打印在頁面上的例子或使用調試器)的域r.site.domain返回正確的域名?

這可能沒有鏈接到路線。

編輯

如果r.site.domain正在恢復你想裏面的部分是什麼,那麼可以將它有一些做與域PARAM約束。 r.site.domain返回的字符串是否通過約束?

+0

我檢查過,是的,它返回了正確的域 – Ashley

+0

不怕,沒有什麼變化 – Ashley

+0

不幸的是,刪除約束沒有區別。這可能與https://github.com/rails/rails/issues/9829有關 – Ashley