试图找出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