我试图模拟使用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)我觉得我过于复杂化了。还有更好的方法吗?
答案 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。