Ruby on Rails: добавление пользователя для входа в мое существующее приложение убило мой индекс - PullRequest
0 голосов
/ 16 августа 2010

У меня есть приложение, которое я разрабатывал и которое до сих пор было только однопользовательской средой. Я, наконец, дошел до того, что мне нужно было добавить многопользовательские возможности, поэтому я последовал за Railscast на authlogic , чтобы получить простой логин.

Затем я добавил has_many :items и accepts_nested_attributes_for :items и belongs_to :user к правильным моделям. Затем я удалил базу данных и настройки, а затем перенес ее. Я также добавил столбец user_id ко всем моим вложенным моделям.

После этого, когда я нажимаю ссылку «Создать новый элемент», я перехожу на новую страницу и создаю новый элемент. Когда я возвращаюсь на страницу item_index, он больше не появляется. Я могу зайти в localhost / item / 1 и посмотреть запись, так что я знаю, что она создается, но когда я пытаюсь просмотреть ее в моем item_index.html.erb, она больше не отображается.

Вот основной цикл, который работал до того, как я добавил пользователя. (Это рендеринг в таблицу)

<% for item in @items %>
    <%= link_to item.name, item %>
<% end %>

Я полагаю, что это неправильный цикл, но я не совсем уверен.

Спасибо

edit: Вот что происходит в моем методе index в контроллере предметов:

   def index
     @items = Item.search params[:search]
     if @items.nil?
       @items = Item.all
     end
   end

У меня есть странная вещь if nil?, потому что я использую Сфинк-мышление, и иногда он терпел неудачу, если индекс был пустым.

edit2:

Если я поменяю индекс на

def index
   @items = Item.all
end

Все появляется. Так что это означает, что это связано с мыслью сфинкса возиться с моим рендером

edit3: в образе мышления-сфинкса я сделал несколько вещей, не связанных с ним, и он снова волшебным образом работает.

1 Ответ

0 голосов
/ 16 августа 2010

Thinking Sphinx будет возвращать пустой набор результатов [], когда вы попытаетесь перебрать этот пустой набор, вы не получите никаких отображаемых элементов. никогда вернет nil для результата поиска.

Возможно, попробуйте это вместо:

if @items.empty?
  @items = Item.all
end
...