Rails技术在重定向后执行javascript

wpp*_*wpp 12 javascript jquery ruby-on-rails

启用了Rails应用程序(3.2.8)和turbolinks(不确定是否相关).

  1. 我有一些信息,一个link在用户显示页面上.(例如某事发生变化的通知.)
  2. 当用户点击链接时我想将他引导到页面并且
  3. 直观地突出显示已更改的元素.

目前我打算像这样处理它:

创建链接,使它们具有以下形式:

project2/comment.1453

创建一个notifications controller,获取projects2更改类型comment及其ID的内容1453.所以理论上我想重定向projects2并突出显示该页面上id为1453的评论.问题是:重定向后如何突出显示注释?

notificationscontroller.rb(伪代码!)

def show
  project = Project.find(params[:project_id])
  comment = Comment.find(params[:commment_id])
  redirect_to project AND highlight!
end
Run Code Online (Sandbox Code Playgroud)

在我的研究期间,我遇到了Backbone,看起来像Backbones路由器可以通过使用函数响应url来解决这个问题(注释的突出显示).但我对Backbone没有任何经验.

我不确定这种功能的一般方法是什么.并希望避免走错路.如果你可以帮助我,那会很棒.

编辑:一个迷你问题的排序:我不确定使用哪个字符comment.1453#一个更好的选择?(comment#1453)

Ari*_*jan 5

除了在您重定向到的页面上包含javascript之外,您无法在重定向之后运行javascript.

您想要的是将此请求中的信息传递给下一个(重定向)请求.

闪光灯是一种很好的方法.通常你会用它来发短信:

redirect_to project, notice: "Project foo bar message"
Run Code Online (Sandbox Code Playgroud)

要么

flash[:notice] = "Project foo bar message"
redirect_to project
Run Code Online (Sandbox Code Playgroud)

没有什么可以阻止你在闪存中使用其他标识符并在其中存储JSON.

flash[:highlight_ids] = "[12, 43, 472, 482]"
redirect_to project
Run Code Online (Sandbox Code Playgroud)

然后在您的布局或某处将此Flash消息提取到JavaScript:

var highlight_ids = <%= flash[:highlight_ids] %>;
Run Code Online (Sandbox Code Playgroud)

然后做你的javascript魔术来突出显示实际的元素.