Rails更新页面没有原型?

时间:2011-07-06 16:14:03

标签: jquery ruby-on-rails ajax rjs

我正在尝试(仍然)获得ajaxful-rating以使用我的rails安装。我没有用原型安装我的应用程序因为我喜欢jQuery。

教程(以及其他所有人)已经说过用它来渲染更新

render :update do |page|
  page.replace_html id, ratings_for(@entry, :wrap => false, :dimension => params[:dimension])
  page.visual_effect :highlight, id
end

然而,我得到一个'未定义的局部变量或方法'id''...我可以通过标准来获得没有ajax 的gem

respond_to do |format|
  format.html { redirect_to @entry }
  format.js { render :layout => false}
end

我想我总是可以做一个jQuery.ajax调用,但是我想尽可能紧密地将它实现到我的rails应用程序中 - 我想学会以正确的方式去做。 :)

请请帮忙。我绝对是求助于求助。

2 个答案:

答案 0 :(得分:1)

我没有尝试过,因为我更喜欢将所有东西分离(也就是说,页面应该可以工作而不依赖于javascript),但是看看jquery rails plugin http://rubygems.org/gems/jquery-rails

它可能会做你想要的,因为它应该是原型的完全替代品。

但是,错误听起来像是缺少一些初始化。请尝试使用params[:id]代替。

答案 1 :(得分:1)

id应该是您尝试用新评级替换的评级元素的dom id。因此,请查看id是什么,并使用该字符串替换代码中的id

您也可以手动编写JS代码而不依赖于RJS。

像这样的东西

$("#YOUR_ID_HERE").html("<%= escape_javascript ratings_for(@entry, :wrap => false, :dimension => params[:dimension]) %>");
$("#YOUR_ID_HERE").effect("highlight");

将此代码放在您的视图中,将其命名为your_action.js.erb(当然,将your_action替换为您的操作名称)。那么你的标准respond_to块应该可以工作