Rails 3:为具有唯一部分渲染的视图创建唯一的URL

时间:2013-10-23 15:02:18

标签: ruby-on-rails ruby-on-rails-3

我能找到的最好的例子是选择了特定图像的Google图片页面的网址。所选的每个图像的URL都会更改。

就我而言,我有一个笔记本模型和一个嵌套的Notes模型。在显示所有注释的视图中,当用户单击注释时,他/她将被带到注释显示视图。相反,我希望它们在同一视图中显示为部分,但我希望更改URL以包含有关所选注释的信息。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以在javascript中使用replaceState()执行此操作。当用户点击笔记时,你可以以任何你想要的方式打开笔记(例如使用ajax调用)然后当它打开时你使用回调来激活replaceState()函数,该函数将用你的任何内容替换当前的url想要(我想你的笔记的网址)。

然后,当用户使用此精确网址进入您的网站时,您可以解析网址以显示他请求的注释(或让Rails默认行为将其重定向到您的注释显示视图)。

以下是replaceState()的文档:https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history#The_replaceState().C2.A0method

以下是使用jquery来说明我的观点的相应视图的非工作示例:

= link_to "note", note_path(@note), id: 'x_link'

<script>
    $('#x_link').click(function(e) {
        e.preventDefault() //we do not let the event propagate
        href = $(this).attr('href') //we get the href attribute of our note
        $.get(href, function(data) {
            show_partial(data) // write some method to display you partial
            history.replaceState(null, null, href) //replace the current state
        })
    })
</script>