Ajax,Ruby on Rails中的link_to remote是什么?

3

我刚接触Ruby on Rails。我正在跟随教程学习如何使用link_to和remote=true在Rails上理解Ajax的工作原理。以下是我的代码:

// 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 文件夹中。 但我在浏览器上没有看到时间。 请求有人帮忙。
1个回答

1
您缺少更新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,可能会解释清楚事情。

嘿,谢谢,它起作用了。问题也在于link_to的语法。我将其更改为<%= link_to(“点击这里”,:action =>:say_when,:remote => true)%>。现在它可以运行了!! - nbbk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接