Как реализовать Ajax поиск в Rails?

Здравствуйте, имею следующий код
<%= form_tag ads_path, :method => 'get' do %>
	<%= label_tag("Поиск по тексту:") %>
    <%= text_field_tag :search, params[:search] %>
    <br/>
	<a class="btn btn-success"><%= submit_tag 'найти', :name => nil %></a>
<% end %>

В принципе поиск по кнопке работает нормально, необходимо прикрутить "живой поиск", начал искать, гуглить, в основном везде ссылаются на 240 эпизод railscaste, но есть одна проблема, там используется render паршила, который сейчас не работает в Assets. Подскажите, как же реализовать сейчас этот, всем полюбившийся "живой поиск"?

Заранее спасибо!
  • Вопрос задан
  • 4148 просмотров
Пригласить эксперта
Ответы на вопрос 3
viktorvsk
@viktorvsk
render паршила, который сейчас не работает в Assets.

Что это такое?
Если вы про action.js.erb, то все прекрасно работает, смотрите, почему не работает у вас.
Ответ написан
Prognosticator
@Prognosticator
TODO: Здесь будут ворованные умные мысли, типа мои
Прочтите для понимания.
А потом посмотрите аналогичный вопрос.
Ответ написан
@Jukeboxx Автор вопроса
index.html.erb
<%= form_tag ads_path, :method => 'get', :id => "ads_search" do %>
    	<%= label_tag("Поиск по тексту:") %>
    <%= text_field_tag :search, params[:search] %>
    <br/>
	<a class="btn btn-success"><%= submit_tag "Найти", :name => nil %></a>
<% end %>
<br/>
<div id="ads">
	<%= render 'ads' %>
</div>
<%= will_paginate @posts%>

index.js.coffee.erb
$('#ads').html('<%= escape_javascript(render 'views/ads/ads') %>');

_ads.html.erb
<h1>Список объявлений</h1>

<table>
	<% @ads.each do |ad| %>
		<h2><%= link_to ad.title, ad %></h2>
		<%= ad.text %><br/>
		<strong>Город: </strong><%= ad.city.name %><br/>
		<strong>Дата публикации: </strong><%= ad.created_at %>
	<% end %>
</table>

ad.rb
class Ad < ActiveRecord::Base
  belongs_to :city
  attr_accessible :title, :text, :number, :published_date, :city_id
  
	def self.search(search)
	  if search
	    where('text LIKE ?', "%#{search}%")
	  else
	    Ad.all
	  end
	end

end

ads_controller.rb
def index      
    @ads = @ads.paginate(:page => params[:page], :per_page => 50).order("created_at desc").search(params[:search])    
  end

application.js
//= require jquery
//= require jquery_ujs
//= require_tree .
$(function () {
      // Search form.
      $('#ads_search input').keyup(function () {
      $.get($('#ads_search').attr('action'), &crarr; 
        $('#ads_search').serialize(), null, 'script');
      return false;
      });
    });

Вроде все те файлы, что были в примере том указал.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы