メッセージ ページにリダイレクトするのではなく、すべての URL で検索フォームが機能するようにしたいと考えています。たとえば、「こんにちは」の検索では次のようになります。
on /messages return /messages?utf8=✓&search=hi&commit=Search
on /posts return /posts?utf8=✓&search=hi&commit=Search
私のアプリケーション ビュー (ブートストラップ スタイル) では:
<%= form_tag(messages_path, :method => "get", class: "navbar-form navbar-left") do %>
<div class="form-group">
<%= text_field_tag :search, params[:search], placeholder: "Search", class: "form-control" %>
</div>
<%= submit_tag "Search", class: "btn btn-default" %>
<% end %>
メッセージ コントローラー:
def index
if params[:search]
@messages = Message.search(params[:search]).order("created_at DESC")
else
@messages = Message.all.order("created_at DESC")
end
end
ユーザーコントローラー:
def index
if params[:search]
@users = User.search(params[:search]).order("created_at DESC")
else
@users = User.all.order("created_at DESC")
end
end
メッセージ モデル:
def self.search(search)
where("title LIKE ?", "%#{search}%")
end
ユーザーモデル:
def self.search(search)
where("username LIKE ?", "%#{search}%")
end
パラメータをコピー(?utf8=✓&search=hi&commit=Search)
してページに貼り付けると、正常に機能します。フォームから削除しようとしmessages_path
ましたが、エラーが発生しました。使用しているコントローラーに基づいて変化するフォーム パスを使用するにはどうすればよいですか?