用新数据渲染当前页面
这是我的简单ajax代码。用新数据渲染当前页面
发出请求,我得到响应,但我的视图没有用新数据呈现。我用新的html获得了一个新的页面,我要求这个新的页面在当前页面内呈现。
控制器 -
def list
@users = User.find(:all)
end
def show
respond_to do |format|
format.html { render :partial => "ajaxshow" }
format.js
end
end
视图 -
<% @users.each do |c| %>
<%= link_to c.user_id, {:action => :show, :user_id => c.user_id, :remote => true } %>
<% end %>
局部 -
# cat _ajaxshow.html.erb
<div align="left" id="user_ajax">
<table width="1000px">
<tr><th>User ID</th><th>First</th><th>Last</th><th>ID</th><th>Email</th></tr>
</table>
日志 -
Started GET "https://stackoverflow.com/users/show?remote=true&user_id=someuser" for 10.10.10.10 at 2012-04-17 04:01:09 -0400
Processing by UsersController#show as HTML
Parameters: {"remote"=>"true", "user_id"=>"someuser"}
Rendered users/_ajaxshow.html.erb (0.3ms)
Completed 200 OK in 2ms (Views: 1.3ms | ActiveRecord: 0.0ms)
您的link_to不会触发Ajax调用
<%= link_to c.user_id, {:action => :show, :user_id => c.user_id, :remote => true } %>
首先改变上面的代码
<%= link_to c.user_id, {:action => :show, :user_id => c.user_id }, { :remote => true, :method => :get } %>
感谢你们俩。我试过这些,仍然没有工作。我修改了link_to来进行适当的ajax调用。并在div中添加一个带有新div标签的js.erb文件。 我只想做一个Ajax获取请求并在同一页面上呈现新数据。 。 ''
'#猫show.js.erb $('#阿贾克斯)HTML($( ' “ajaxshow” %>'))' – 2012-04-17 08:48:14检查你的日志。你显示有以下行处理UsersController#显示为JS – 2012-04-17 08:58:07
尝试$('#some_div_id')。html(“ajaxshow”%>) – 2012-04-17 09:00:48
您需要为User
控制器操作使用.js.erb
文件,该文件将通过format.js
调用进行调用。
在show.js.erb
使用
$('#some_div_id').html($('<%= render :partial => "ajaxshow" %>'))
总之你行动的目的似乎不起眼的我。
我错过了这部分,谢谢。我补充说,但仍然没有运气。 – 2012-04-17 09:10:17
我的猜测是:JavaScript的 – pguardiario 2012-04-17 08:27:48
@pguardiario - 见下面我的意见。我刚刚添加了一个js.erb但没有结果。 – 2012-04-17 08:52:30
你如何添加这些数据?对我来说,你必须发布这些数据似乎是明智的。所以正确的路径是使用创建操作。你可以在这里阅读http://blog.madebydna.com/all/code/2011/12/05/ajax-in-rails-3.html和这里http://net.tutsplus.com/tutorials/javascript-ajax/using-unobtrusive-javascript-and-ajax-with-rails-3/ – tommasop 2012-04-17 08:59:33