2013-03-17 42 views
3

我是新来的红宝石在轨道上。我正在学习一个教程,以了解ajax如何在使用link_to和remote = true的rails上工作。我有以下代码。ajax,link_to远程红宝石在轨道上

// in view/home/sample.html.erb 

<head> <%= javascript_include_tag "prototype.js" %> </head> 
<body> 
<div id="time_div"> 
<%= link_to("click here", :update=>'time_div' ,:url=>{:action => :say_when} , :remote => true) %> 
</div> 
</body> 

// in /controllers/home_controller.rb 

def sample 
end 

def say_when 
    render_text "<p>The time is <b>" + DateTime.now.to_s + "</b></p>" 
end 

我把prototype.js放在assets/javascripts文件夹中。 但我没有得到浏览器的时间。 PLZ有人帮助

回答

1

您错过了将更新div内容与Ajax请求的结果的JavaScript。你可以尝试这样的:

创建say_when.js.erb具有以下内容

$("time_div").update('<%= escape_javascript("<p>The time is <b>#{DateTime.now.to_s}</b></p>")%>'); 

您可以从控制器删除方法say_when,也没有在它需要了代码,Rails会直接调用say_when.js.erb文件。

看看这#205 Unobtrusive Javascript Railscast可能会解释的事情。

+0

嘿,谢谢它的工作。问题也出现在link_to语法中。我将它改为<%= link_to(“click here”,:action =>:say_when,:remote => true)%>。现在它的作品! – nbbk 2013-03-17 19:05:34