2009-10-01 83 views
3

比方說,我有這樣的:硬編碼的路線

<%= link_to "My Big Link", page_path(:id => 4) %> 

在我page.rb我想,所以我使用標準,以顯示他們通過網址固定鏈接:

def to_param 
    "#{id}-#{title.parameterize}" 
end 

現在,當我點擊「我的大鏈接」,它將我帶到正確的頁面,但地址欄中的網址不顯示所需的永久鏈接。相反,它只是顯示標準:

wwww.mysite.com/pages/4 

這是因爲我硬編碼的ID到page_path?它還如果我使用直HTML等也不會工作..

<a href="/pages/4">My Big Link</a> 

我會很感激,如果任何人都可以驗證此相同的行爲,讓我知道這是否有意或無意。我需要的能力進行硬編碼:ID的指定確切的網頁...

回答

-1

更新我的問題---------------------->

感謝所有的答案。這是一種一次性的情況。我的解決辦法是簡單地用HTML去:

<a href="/pages/4-great-title-here">My Big Link</a> 

它生產所需:

wwww.mysite.com/pages/4-great-title-here 

我沒有通過頁面對象要循環和廢物對數據庫的調用這一個環節。非常感謝所有的答案!

1

這是因爲您指定的ID:

page_path(:id => 4) 

你可以指定在此方法所需的路徑:

page_path(:id => "#{id}-#{title.parameterize}") 

你在哪裏定義了to_param方法?在模型中?

+0

嗨託比,是的,它在page.rb.我仍然不清楚爲什麼指定:id不會採取:id並調用page.rb中的to_param方法? – drpepper 2009-10-01 02:22:58

+0

其實我可以看到爲什麼 - 我想我更尋找解決方法:) – drpepper 2009-10-01 02:24:14

5

只需使用page_path(page)。我猜路徑幫助程序不會自己訪問數據庫(這很好),但是如果它們被提供了一個對象並且該對象具有to_param方法,則此方法將用於生成標識符。

<%= link_to "My Big Link", page_path(page) %>