試圖找出Rails 3應用程序中的以下this post(本身從Railscast中借用)中的Ajax搜索。目前,當我提交,沒有任何反應,如果我進入控制檯鉻,我看到這個錯誤:Rails Ajax搜索沒有做任何事 - 404錯誤
GET http://localhost:3000/search?utf8=%E2%9C%93&search=&_=1361491523102 404 (Not Found)
posts.js線5似乎是有罪的,但只是似乎是jQuery的電話,所以我不確定我做錯了什麼。
我的相關代碼:
posts.js.coffee
jQuery ->
# Ajax search on submit
$('.search_form').submit(->
$.get(this.action, $(this).serialize(), null, 'script')
false
)
posts_controller.rb
def show
@search = Post.search(params[:search])
respond_to do |format|
format.html # show.html.erb
format.json { redirect_to @post }
end
end
def search
@search = Post.search(params[:search])
render json: { results: @search }
end
post.rb
def self.search(search)
if search
where('name LIKE ?', "%#{search}%")
else
scoped
end
end
show.html.erb
<%= form_tag search_path, method: "get", class: "search_form form-inline",
style: "display:inline-block;" do %>
<%= text_field_tag :search, params[:search], placeholder: "Search:", id: "search_field" %>
<%= submit_tag("Search", name: nil, class: "btn search", remote: true) %>
<% end %>
# Testing for @search stops it from pulling a "no method '.first' for nil NilClass" error.
<div id="list"><%= render partial: 'list', locals: { search: @search } if @search%></div>
list.html.erb
<ul>
<% @search.each do |p| %>
<li><a href=<%= p.id %> ><%= p.name %> <span class="manual_small">(<%= p.created_at.strftime("%b %d, %Y") %>)</span></a></li>
<% end %>
</ul>
任何想法是怎麼回事錯在這裏?
編輯 - 添加路由的相關線路文件:
resources :posts
# ...
match '/search', to: 'posts#search'
我已經是 '/搜索' 路線那裏。那是對的 - 在這種情況下,問題在其他地方嗎?代碼的其餘部分看起來不錯嗎?
編輯 - 增加搜索方法PostsController,每達米安的rec。感興趣的新事物是a)我稱之爲partial,新搜索動作的方式,然後我試圖用Post.all替換Post.rb中的show方法的內容,但它仍然沒有什麼都顯示。雖然沒有錯誤拋出。
你很可能沒有處理'/ search'的路由。告訴我們你的路線文件 – jvnill 2013-02-22 00:29:04
謝謝!上面添加了它。文件中還有很多內容,但我只是把與Post有關的任何內容都放在這裏。如果你想,我可以把它全部。 – Sasha 2013-02-22 04:32:03
您可以添加「搜索」操作內容嗎? – 2013-02-22 06:18:20