1

在我的Rails應用程序我使用jQuery燒烤的hashchange deeplinking等等如何在軌道中進行鏈接散列?

這裏是我現有的鏈接中軌:

<%= link_to('View on Site ', project_topic_url(@project.id, @topic, :only_path => false),) %> 

我在被通過電子郵件發送了user_mailer文件這個工作。 ..

問題是這樣產生的:http://www.site.com/project/1/topic/23

而且我要的是:http://www.site.com/#/project/1/topic/23

關於如何讓url中的hash#成爲ajax,深入鏈接友好的任何想法?

謝謝

回答

2

你總是可以創建一個幫助器方法來處理這個問題。

def project_topic_ajax(id, topic) 
    "http://www.site.com/#/project/#{id}/#{topic.name}/#{topic.id}" 
end 

然後,只是調用,而不是默認鏈接助手。

更新:我找到了你的解決方案。

<%= link_to "View on Site", "##{project_topic_url(@project.id, @topic)}" %> 

它更乾淨,但不完全是你所尋找的我意識到的。

對於絕對路徑,它應該是這樣的(有點髒):

<%= link_to "View on Site", "http://www.site.com/##{project_topic_url(@project.id, @topic)}" %> 
+0

我可以,只是希望有可能是一個設置?我想這是一個相當普遍的要求? – AnApprentice 2011-04-27 18:54:11

+0

有':anchor'標籤會自動在路徑的末尾添加一個'#'。除此之外,我不知道有哪些配置選項或幫助程序可以幫助您實現目標。 – 2011-04-27 18:59:04

+0

謝謝查克,但錨標記是不同的,因爲你提到 – AnApprentice 2011-04-27 18:59:42

0
<%= link_to 'View on Site ', [project_topic_url(@project.id, @topic).gsub(/#{project_topic_path(@project.id, @topic)}/, ""), project_topic_path(@project.id, @topic)].joins("#") %> 

你最好把它包起來作爲幫助

0

有點晚了也許;但你可以收拾你的整個路線中的哈希範圍的文件,像這樣:

MyRails::Application.routes.draw do 
    scope :hash, :path => "/#" do 
    resources :project do 
     resources :topic 
     # ... 
    end 
    # ... 
    end 
end 

使用Rails 3.2.8,運行rake routes它會產生預期的效果。

不知道這將如何影響你的意見或jQuery燒烤這件事