2011-07-06 33 views
0

我想(仍然)得到ajaxful评级与我的导轨安装工作。我没有用原型安装我的应用程序,因为我喜欢jQuery。Rails更新页面没有原型?

教程(和其他人)曾表示,用这个来呈现更新

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

不过,我得到一个“未定义的局部变量或方法‘ID’” ......我可以得到宝石通过做标准工作没有Ajax

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

我想我可以永远只是做一个jQuery.ajax电话,但我想作为应用程序紧密落实到我的rails这个地 - 我想学会以正确的方式做到这一点。 :)

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

+0

在页面'page.replace_html id,...',那里以及如何设置id变量?你说你得到一个错误,'id'是未定义的,所以这可能是你的麻烦程度。 –

回答

1

我还没有尝试过,因为我更喜欢去耦一切(也就是页面应该工作,而不依赖于JavaScript在所有为),但看看jQuery的Rails插件http://rubygems.org/gems/jquery-rails

它可能会做你想要什么,因为它应该是一个完整的原型替代品。

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

+0

该页面没有JavaScript的工作 - 我只是不知道如何得到这个ajax-ified。 –

+0

好的,但后来尝试jQuery轨道宝石,看看是否能解决问题。或者升级到包含它已经开箱即用的rails 3.1(如果你刚刚开始的话,那么只需要这样做,因为它仍然处于预备阶段,所以我不知道为什么我会提及它:)) –

+0

I我的gemfile中已经包含了jquery-rails ......并且我运行了'bundle install'。 :/ 奇怪的?有什么我需要做的,以告诉轨道,这应该被呈现为JS而不是HTML? –

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块应该可以工作

+0

对!我做到了,现在我得到一堆js向我吐口水。那我该怎么做? –

+0

很难说没有看代码。你有没有像Jimmy建议的那样安装jquery-rails? – egze

+0

查看我编辑的答案 – egze