3

Rails に移植されている既存の検索ベースのアプリがあります。レガシーな性質のため、次の形式の既存の URL を保持する必要があります。

/books          # search all books
/books/fiction  # search books with :category => fiction

indexこれらをコントローラーの&アクションにマッピングしましたshowが、正常に動作しますが、すべての書籍と特定のカテゴリの書籍を表示するためのコードとマークアップは実質的に同じです。

showindexアクションを組み合わせる最良の方法は何ですか? このアプリは、実際にはwithindexの退化したケースです。show:category => nil

できます:

def index
   show
   render "show"
end

しかし、それはちょっと醜いようです。Railsでこれを行うためのより慣用的な方法はありますか?

4

1 に答える 1

4

オプションのカテゴリで1つのルートを使用しないのはなぜですか。

get '/books(/:category)' => 'books#search'

そしてBooksController

def search
    # Look at params[:category], if it is there then use it
    # to search, if it isn't there then list 'em all.
    @results = ...
end

そうすれば、1つのルート、1つのコントローラー、1つのビュー(すべてを支配し、暗闇の中でそれらをバインドするため)があり、重複や不正行為はありません。

于 2012-06-03T03:27:31.827 に答える