Я пытаюсь реализовать Thinking Sphinx 2.0.10, который, насколько я понимаю, совместим с Rails 3. Я очень новичок в программировании с использованием Ruby on Rails. Я прочитал довольно много статей о StackOverflow, но не смог найти решение своей проблемы.
Я установил гем без использования параметра: require в моем Gemfile.
gem 'thinking-sphinx', '2.0.10'
У меня есть работающее приложение Rails, которое отображает список, к которому я хотел бы добавить поиск.
Вот мой код для определения индексов в моем файле модели.
define_index do
indexes :email, :sortable => true
indexes :name, :sortable => true
indexes microposts.content, :as => :micropost_content
end
Вот код Rails в моем файле контроллера. Закомментированная строка - это оригинальный код, который работает. У меня есть значение по умолчанию для will_paginate, я думаю, в контроллере приложения для 15 записей на страницу.
def index
@users = User.search params[:search], :per_page => 15
# @users = User.paginate(page: params[:page])
end
Вот поле поиска, которое я добавил на свою индексную страницу.
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", :name => nil %>
</p>
Вот мой код rSpec. Это оригинальный код, который я использовал до того, как попытался реализовать Thinking Sphinx.
describe "index" do
let(:user) { FactoryGirl.create(:user) }
before(:each) do
sign_in user
visit users_path
end
it { should have_selector('title', text: 'All users') }
describe "pagination" do
before(:all) { 15.times { FactoryGirl.create(:user) } }
after(:all) { User.delete_all }
let(:first_page) { User.paginate(page: 1) }
let(:second_page) { User.paginate(page: 2) }
it { should have_link('Next') }
it { should have_link('2') }
it { should_not have_link('delete') }
it "should list each user" do
User.all[0..2].each do |user|
page.should have_selector('li', text: user.name)
end
end
it "should list the first page of users" do
first_page.each do |user|
page.should have_selector('li', text: user.name)
end
end
it "should not list the second page of users" do
second_page.each do |user|
page.should_not have_selector('li', text: user.name)
end
end
describe "as an admin user" do
let(:admin) { FactoryGirl.create(:admin) }
before do
sign_in admin
visit users_path
end
it { should have_link('delete', href: user_path(User.first)) }
it "should be able to delete another user" do
expect { click_link('delete') }.to change(User, :count).by(-1)
end
it { should_not have_link('delete', href: user_path(admin)) }
end
end
end
Когда я запускаю тест rSpec, я получаю следующую ошибку:
Failure/Error: visit users_path
ActionView::Template::Error:
getaddrinfo: nodename nor servname provided, or not known
Страница отображается очень хорошо. Когда я ввожу текст в поле поиска и нажимаю кнопку, ничего не происходит, что меня не удивляет.
Я могу запустить Sphinx на терминале. Поиски работают нормально. Я просто не знаю достаточно, чтобы решить эту проблему с Thinking Sphinx. Я искал много страниц на этом сайте и многие другие в последние несколько дней, но ни одна из них не занималась этой проблемой. Любая помощь будет оценена.