我正在使用link_to:remote来更新HTML上的div
个元素之一。这只是初学者的代码。但是,单击链接时不会进行更新。这是代码:
class SampleController < ApplicationController
def updater
render :text => Time.now
end
end
这是list.html.erb:
<script type = "text/javascript" src = "/javascripts/prototype.js">
<%= link_to "Hello Testing",
:update => "test_id",
:url => {:action => 'updater'},
:remote => true
%>
<div id="test_id"></div>
因此,单击“Hello Testing”链接,浏览器中的URL将更改为:
http://localhost:3000/samples?remote=true&update=response_id&url[action]=updater
但是,我尝试设置为当前时间的div
元素不会出现在UI上。这可能是什么问题?
使用以下内容更新了帖子:
routes.rb:http://pastebin.com/wmKsa1DD 生成的HTML代码:http://pastebin.com/stU3FpL8 Firebug中的HTML响应:http://pastebin.com/WjsB7zAh
使用url_for
不会改变行为。
答案 0 :(得分:1)
请使用url_for:
<%= link_to "Hello Testing", url_for(:action => :updater),
:update => "test_id", :remote => true %>
我不是百分百肯定,但我不认为:更新会起作用,因为Rails3现在主要依赖于ujs。
更新div的“rails方式”看起来像(jquery):
$('div#test_id').bind('ajax:complete', function(event, xhr) {
$(this).html($.parseJSON(xhr.responseText));
})
答案 1 :(得分:0)
1:您还应该包含rails.js
文件。普通的Rails就是这样的:
<%= javascript_include_tag :defaults %>
2:我更喜欢将此命名用于网址:updater_samples_path
或[:updater, :samples]
3:你应该显示你的路线。如果updater
方法不使用GET
方法,那么您应该定义它:
<%= link_to "Hello Testing", :update => "test_id", updater_samples_path, :method => :put, :remote => true %>
4:使用 FIREBUG 来查看您的AJAX响应。因此您可以轻松调试您的应用程序。您也可以向我们展示其响应,以便我们更好地了解情况