Проблема с получением базового кода плагина searchlogic для работы в Rails App - PullRequest
1 голос
/ 07 февраля 2010

Мое приложение rails выдает эту ошибку:

Вызывается id для nil, который по ошибке будет равен 4 - если вы действительно хотите id nil, используйте object_id

Я пытаюсь создать базовую форму, которая позволит пользователю искать «совпадение» по «стране». Это просто доказательство концепции, поскольку я все еще учусь.

Вот моя модель:

class OmMatch < ActiveRecord::Base
end

Вот мой контроллер:

class OmMatchesController < ApplicationController

 def search
  @search = OmMatch.search(params[:search])
  @match = @search.all
 end 
end

Вот вид:

<html> 
  <head><title>"Matches"</title></head>
  <body>
    <% form_for @search do |f| %>
    <p>
      <%= f.label :country_equals, "Country" %><br />
      <%= f.text_field :country_equals %>
    </p>

    <p>
      <%= f.submit "Submit" %>
    </p>

  <% end %>

  <table>
  <tr>
    <th>"Match Name"</th>
    <th>"Country"</th>
  </tr>
  <% @match.each do |match| %>
  <tr>
    <td><%=h match.matchname %></td>
    <td><%=h match.country %></td>
  </tr>
 <% end %>
 <table>
</body>
</html>

Я считаю, что проблема в том, что поиск не инициализируется, но я не уверен, как это сделать.

1 Ответ

1 голос
/ 07 февраля 2010

Когда вы делаете

<% form_for @search do |f| %>

Ожидается, что @search будет инициализированным объектом активной записи с маршрутами, определенными в файле rout.rb.

Я предполагаю, что проблема заключается в том, что вы выполняете запрос GET к поисковому действию OmMatch.

Если поиск - это объект, который вы можете инициализировать, просто добавьте

@search = Search.new

к вашему контроллеру.

Здесь необходимо рассмотреть рабочий процесс для того, какое действие запускается, когда форма запрашивается по ссылке, и что происходит, когда пользователь публикует форму.

Помните, что вы можете запустить

rake routes

чтобы увидеть все маршруты, о которых ваше приложение знает для ваших ресурсов и контроллеров.

Я бы порекомендовал вам проверить снимки экрана Railscasts, особенно те, которые касаются маршрутизации. Очень важно, чтобы вы понимали, как код вашего контроллера отображается с помощью URL. http://railscasts.com/episodes?search=routing Как только вы правильно сопоставите свои маршруты и поймете, когда будет выполняться каждое действие, вы можете убедиться, что ваши объекты созданы до того, как они понадобятся.

...