【发布时间】:2012-11-13 00:15:54
【问题描述】:
控制器应该根据使用 AJAX 通过 POST 请求按下的按钮显示不同的页面
# POST /site_device/1
def show_page
@site_device = SiteDevice.find(params[:id])
respond_to do |format|
format.js
format.json { STDERR.puts "JSON!"; render 'show_page.js.erb' }
end
end
控制器代码#show页面运行,调用json视图模板(下)
<% STDERR.puts "got_here" %>
$('#device-data').html("<h1>Foo!</h1>" ).trigger('create');
我们知道上面的代码正在被调用,因为STDERR 行正在服务器上输出。
在浏览器 (Chrome) 上,我们可以使用控制台来测试视图模板中的代码是否正确运行 - 确实如此:在 Google Chrome 控制台中输入 $('#device-data').html("<h1>Foo!</h1>" ).trigger('create'); 会导致 html 重新呈现为“Foo !”在正确的地方。
然而,令人困惑的是。正在服务器上执行的代码似乎没有被浏览器接收到,或者如果是,它没有执行,或者没有呈现
还有其他人遇到过类似的问题吗?
【问题讨论】:
-
你能发布你的ajax函数吗?
-
当你的意思是 .trigger('create') 那究竟是在做什么。意思是向我们展示您的创建事件处理程序
-
在网上找到了这个 - 它似乎是一种强制刷新页面的 jquery 方法。没有它,代码在浏览器中运行良好。如果有帮助,我将附加原始问题以删除
标签: ruby-on-rails json