0

私が開発しているアプリは、これまでシングルユーザー環境でしかありませんでした。ついにマルチユーザー機能を追加する必要が出てきたので、authlogicのrailscastに従って簡単なログインを取得しました。

次に、正しいモデルにhas_many :itemsaccepts_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 %>

ループが間違っていると思いますが、完全にはわかりません。

ありがとう

編集:アイテムコントローラーのインデックスメソッドで何が起こっているかを次に示します。

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

私はthinking-sphinxを使用しているので、奇妙なif nil?ことがあります。インデックスが空の場合、失敗することがありました。

edit2:

インデックスを変更すると

def index
   @items = Item.all
end

すべてが表示されます。つまり、スフィンクスが私のレンダリングをいじるのを考えることと関係があるということです

edit3:思考-スフィンクスのやり方で、私はそれに関係のないいくつかのことをしました、そしてそれは魔法のように再び働きます。

4

1 に答える 1

0

Sphinxが空の結果セットを返すと考えている[]場合、この空のセットを反復処理しようとすると、アイテムが表示されません。

私の知る限り、ThinkingSphinxが検索結果を返すことはありません。nil

おそらく代わりにこれを試してください:

if @items.empty?
  @items = Item.all
end
于 2010-08-16T01:04:20.370 に答える