Rails 3 ajax响应未执行
我正在为我的应用程序创建一个简单的ajaxfunction,用户可以通过链接增加“like count”。
我已设法获取运行我的控制器代码的链接,浏览器正在收到响应,但响应未执行。
类似链接部分:
.likes .like_up = link_to( image_tag('/images/thumb_up.png'), '/like/' + question.id.to_s, :remote => true) #like_count = 22# question.likecount .like_down = link_to( image_tag('/images/thumb_down.png'), '/dislike/' + question.id.to_s, :remote => true)
它进入了likes_controller:
def up @like = current_user.likes.create( :question_id => params[:question_id], :like => true ) respond_to do |format| format.js end end
然后在我的up.js.haml中,我只需要一个调试javascript:
alert('2');
没有别的。
当我在浏览器中按下like链接时,rails log告诉我它已经渲染了js.haml
... Rendered likes/up.js.haml within layouts/application (104.9ms) Completed 200 OK in 923ms (Views: 116.3ms | ActiveRecord: 20.1ms)
当我查看浏览器获得的响应时,它看起来就像up.js.haml呈现在我的应用程序布局中,其中放置了yield标记。
alert('2');
我怀疑这不是浏览器想要回来的。 此外,在ajax请求期间查看firebug控制台时,发送请求后没有任何反应。
有人可以找出为什么这不起作用? 我发现的每个教程和指南都和我在这里做的一样。
首先,确保内容类型正确:
curl --head -X POST http://localhost:8080/....
我相信Content-Type
应该是text/javascript
其次,我认为您要禁用布局,以便DIV
不会出现在输出中。
def up @like = current_user.likes.create( :question_id => params[:question_id], :like => true ) respond_to do |format| format.js { render :partial => 'up', :layout => false } end end
或者可以在整个控制器中禁用它
layout false
它以一种简单的遥控forms发生在我身上。
重新启动服务器后工作,即使是开发环境。
希望我浪费时间拯救某人。
最好的祝福。