这是我简单的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 "/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)
答案 0 :(得分:1)
您需要为.js.erb
控制器操作设置一个User
文件,该文件将通过format.js
电话进行调用。
在show.js.erb
中使用
$('#some_div_id').html($('<%= render :partial => "ajaxshow" %>'))
无论如何,你的行动目的对我来说似乎模糊不清。
答案 1 :(得分:1)
您的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 } %>