1

在我的 Rails 应用程序中,我使用 jQuery BBQ 进行 hashchange 深度链接等...

这是我在 Rails 中的现有链接:

<%= 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 中的哈希 # 成为 ajax、深度链接友好的任何想法?

谢谢

4

3 回答 3

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)}" %>
于 2011-04-27T18:53:34.963 回答
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-BBQ

于 2012-09-06T12:26:28.277 回答
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("#") %>

你最好把它包装成助手

于 2011-04-27T19:35:01.923 回答