Rails 3 Ajax Search



我正在遵循railscasts rails ajax教程并遇到了一些麻烦,我错过了什么还是本教程仅用于pre rails 3.1?

控制器:

def index
    @notes = Note.search(params[:search])

end

型:

class Note < ActiveRecord::Base
    def self.search(search)
      if search
        where('name LIKE ?', "%#{search}%")
      else
        scoped
      end
    end

end

视图:

<%= form_tag notes_path, :method => 'get', :id => "notes_search" do %>
  <p>
    <%= text_field_tag :search, params[:search] %>
    <%= submit_tag "Search", :name => nil %>
  </p>
  <div id="notes"><%= render 'notes' %></div>
<% end %>

咖啡脚本文件:

jQuery ->
  # Ajax sorting and pagination on click
  $('#notes td.sortable a, #notes .pagination a').live('click', ->
    $.getScript(this.href)
    false
  )
  # Ajax search on submit
  $('#notes_search').submit( ->
    $.get(this.action, $(this).serialize(), null, 'script')
    false
  )
  # Ajax search on keyup
  $('#products_search input').keyup( ->
    $.get($("#notes_search").attr("action"), $("#notes_search").serialize(), null, 'script')
    false
  )

错误出现在以下行:

ActionView::MissingTemplate in Notes#index
   <div id="notes"><%= render 'notes' %></div>

ActionView::MissingTemplate异常基本上是说您尝试渲染的操作没有视图文件。

您需要有一个名为"_notes.html.erb"的部分视图才能正常工作。在视图中,您应该具有类似的东西:

<%= hidden_field_tag :direction, params[:direction] %>
<%= hidden_field_tag :sort, params[:sort] %>
<%= will_paginate @notes %>

我从您 http://railscasts.com/episodes/240-search-sort-paginate-with-ajax 引用的教程中获取了该代码,也许您没有这些参数或尚未安装 gem will_paginate请根据您的需要进行调整。

这与本教程完全无关,但您为什么不考虑使用数据表。做与railscasts教程相同的事情,并且还具有完整的文档和API,使其完全可定制。

最新更新