2012-01-04 109 views
2

使用此questionrailscast 63我有我的文章路由到articles/article_permalink。沒有型號名稱的路由

我希望它們可以在url中沒有模型名稱的情況下訪問,以便my-domain.com/article_permalink直接路由到文章。我只希望在演出中發生這種情況。這可能嗎?

回答

2

我想你需要這樣的東西......

(在routes.rb中)

match '/:id' => 'articles#show', :via => 'get' 

(必須是最後一個,或朝向路線盡頭,因爲它可以匹配其他路線的請求)

要更改article_path(...)助手,「as」可能有所幫助:http://guides.rubyonrails.org/routing.html#overriding-the-named-helpers

或者您可以爲該特定路徑添加助手。

+0

這工作馬上感謝。 「as」似乎用於重新路由註冊新的照片或圖片等 - 我看不到我會如何使用它來完全遺漏型號名稱。你有什麼建議如何使link_to顯示永久鏈接,而不是文章/永久鏈接。 – Edward 2012-01-04 18:02:22

+0

你可以添加一個article_path helper ...我認爲這就是所謂的生成url。 我想調查一下:作爲選擇,我仍然認爲這可以做你想做的事,儘管我不積極。並確保不會干擾您的其他文章路徑(更新,刪除等)。 – samsm 2012-01-05 20:27:35

0

如果我理解您的問題,您希望與路線「articles/article_permalink」綁定的模型基於哪個文章從列表中選擇是動態的?

您是否願意將模型ID附加到URL的末尾作爲查詢字符串?更復雜的方法是將您的鏈接POST,將模型ID作爲隱藏的輸入字段。你的控制器可以通過get/post來確定它是否被訪問,並相應地處理它,但是這並不正確。

無論如何,當基於對「articles/article_permalink」的請求啓動控制器動作時,它必須知道要獲取哪個模型。由於HTTP是無狀態的,所以必須傳入一些東西。你可能會喜歡並編寫JavaScript來觸發一個AJAX調用,設置一個會話變量,然後觸發GET,但這很麻煩。

我希望我理解這個問題......

+0

[請勿在您的帖子中使用簽名或標語](http://stackoverflow.com/faq#signatures)。 – meagar 2012-01-04 16:01:30