所以我试图在 rails 3 中进行一个简单的 ajax 调用,但无法让 ajax 正确返回。我想我遗漏了一些明显的东西,但过去 3 个小时我一直在尝试,所以我想是时候问了。
我正在尝试在应该返回搜索结果的帖子模型的索引页面上进行 ajax 调用。
我的索引操作的 posts_controller.rb 看起来像这样。
def index
@posts = Post.search(params[:search])
respond_to do |format|
format.html # index.html.erb
format.js #ajax call
format.json { render json: @posts }
end
end
我的 index.html.erb (其中包含搜索文本字段和要返回(ajax)结果的 div 看起来像这样
<%= form_tag posts_path, :method => "get", :remote => true do %>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", :class => "btn", :name => nil %>
<% end %>
<div id="posts">
<%= render @posts %>
</div>
我的 _post.html.erb 看起来像这样
<table>
<tr>
<td class="well well-small"><%= post.title %></td>
<td class="well"><%= post.content %></td>
<td><%= link_to 'Show', post %></td>
<td><%= link_to 'Edit', edit_post_path(post) %></td>
<td><%= link_to 'Destroy', post, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<br />
<br />
</table>
我的 index.js.erb 看起来像这样
$("#posts").html("<%= escape_javscript(render :partial => "new" ) %>");
我的 post.rb 模型页面看起来像这样
class Post < ActiveRecord::Base
attr_accessible :content, :title
def self.search (search)
if search
find(:all, :conditions => ['title LIKE ?', "%#{search}%"])
else
find(:all)
end
end
end
抱歉,必须有这么多代码只是想显示所有相关内容。出于某种原因,我的搜索结果没有用 ajax 更新。当我从 index.html.erb 的表单中删除 :remote => true 并删除 index.js.erb 文件时,搜索结果会很好地返回(没有 ajax),所以我的搜索功能不是问题。
在此先感谢您的帮助。一如既往,如果你给我一个好的答案,我会接受它作为正确的答案。