0

私はRailsで簡単な検索をしています:

def self.search(search)
# if search is not empty
if search
find(:all, :conditions => ["name LIKE ?", "%#{search}%"])
# if search is empty return all
else
find(:all)
end

景色:

<% if @registries.empty? %>
Can't find the registry. Please try a differnet name.
<% else %>
<% @registries.each do |registry| %>
 ......etc.

クエリが見つからなかった場合、find(:all) の代わりに "Nothing Found" を表示するようにコーディングするにはどうすればよいですか?

私はいくつかのことを試みますが、何もうまくいきません。else を取り出しても、探しているものが見つからない場合は、すべてのクエリが表示されます。

前もって感謝します

4

1 に答える 1

1

「空ではない」ことを意味する場合は、それに対して具体的にテストする必要があります。Ruby では、false として評価される値は と の 2 つだけであることを思い出してfalseくださいnil

あなたはおそらく意図した:

if (search.present?)
  where("name like ?", "%#{search}%").all
else
  all
end

Rails 3 のスタイルwhere句を使用すると、メソッドが非常に理解しやすくなります。findwithの使用:conditionsは古い Rails 1 および 2 スタイルです。

于 2012-06-28T14:09:51.577 に答える