まず、RoRは初めてなので、答えは明らかかもしれませんが、その場合はお詫び申し上げます。私は周りを見回しましたが、役立つものは何も見つかりませんでした。
アプリのすべてのウェブページのヘッダーに、すべての「バケット」の名前を検索する検索フォームを配置しようとしています。関連するコードは次のとおりです。
app / views / layouts / _header.html.erb(ナビゲーションバー内):
<% search_form_for @q do |f| %>
<%= f.label :name_cont %>
<%= f.text_field :name_cont %>
<%= f.submit %>
<% end %>
app / controllers /buckets_controller.rb内:
def index
unless params[:q].blank?
@q = Bucket.search(params[:q])
@buckets = @q.result.paginate(:page => params[:page])
else
@buckets = Bucket.find(:all, :limit => 5).paginate(:page => params[:page])
end
end
最後の部分はそれほど素晴らしいものではないことを理解しています。私がやろうとしているのは、バケットのインデックスページにアクセスしているだけの場合(検索ではなく)、最近作成された5つのバケットを表示することです。ヘッダーフォームで何かを検索すると、インデックスページにアクセスしますが、検索にヒットしたバケットのみが表示されます。(検索ページをインデックスページとは別にするために、それを処理するためのより良い方法はありますか?)
この問題はほとんど同じであることがわかりましたが@q
、すべてのページにフォームが含まれる場合の処理方法がわかりません。確かに、すべてのコントローラーのすべてのアクションを変更する必要はありませんか?
欲求不満を前もって申し訳ありません。