如何在rails中进行链接哈希?

时间:2011-04-27 18:48:04

标签: ruby-on-rails ruby-on-rails-3 jquery-plugins deep-linking

在我的rails app中我正在使用jQuery BBQ进行hashchange deeplinking等...

以下是我在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,深层链接友好的任何想法?

由于

3 个答案:

答案 0 :(得分: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)}" %>

答案 1 :(得分: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("#") %>

你最好将其作为帮手包装

答案 2 :(得分: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