模拟远程=> True Link点击使用Javascript

时间:2014-07-24 12:53:21

标签: javascript jquery ruby-on-rails ajax ujs

我试图模拟使用javascript点击我的一个Rails 3 AJAX链接(remote => true)得到的响应。但我想知道我是不是以错误的方式思考这一切。

我有一些AJAX链接可以在仪表板中交换页面内容。像这样:

<%= tabs_tag(:builder => RemoteTabsBuilder) do |tab| %>
          <%= tab.preview 'Preview', unit_surveys_preview_path(@unit), :class => "mylink", :remote => true %>
          <%= tab.sendpage 'Send', unit_surveys_send_path(@unit), :class => "mylink", :remote => true %>
          <%= tab.home 'Results', unit_responses_results_path(@unit), :class => "mylink", :remote => true %>
<% end %>

这可以按预期工作,使用ajax:success事件替换页面内容的主要部分。但是在其中一个页面中,我有一些创建模态覆盖的javascript,我想要做的是在页面完成后重新加载页面。

我尝试使用以下方法重新加载整个页面:

format.js { render :redirect}

在控制器中但我不想重新加载整个仪表板,我只是想重新加载“结果”&#39;页面内容。所以我想我想模拟点击我现有的链接:

<%= tab.home 'Results', unit_responses_results_path(@unit), :class => "mylink", :remote => true %>

但是

1)我怎样才能使用javascript(或jQuery)? (基于这个帖子:doing a remote => true call with javascript我相信我可以使用$ .get模拟点击,但不会触发Rails UJS响应)

2)我觉得我过于复杂化了。还有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

1)我不认为整页的重新加载是个好主意,但你可以通过

来做到这一点。

window.location = 'http://stackoverflow.com/questions/tagged/ruby-on-rails'

作为回应,但我认为这不是,你在寻找什么。

2)我认为最佳解决方案是呈现单位响应结果响应。你可以这样做:

format.js do
  #set variables(Ex.: @unit)
  render 'unit_responses_results/index'
end

3)或者您可以添加一些脚本来删除回复中的叠加层。

4)你也可以使用$ .get来模拟然后评估来自服务器的js。