0

自分では解決できない問題があるので、助けていただければ幸いです。これは、ユーザー認証を含む Rails アプリケーションに関するものです。

問題は、検索クエリを処理する新しいページに入力を投稿する検索機能の入力フォームが必要なことです。しかし、Rails は、POST がユーザー認証全体に属していると考え、ログイン ページにリダイレクトするため、うまくいきません。

問題は、この 1 つの入力フォームを他のすべてのフォームからどのように分離するかということです。検索用に新しいコントローラーが必要かもしれないと思ったのですが、検索全体は Rails ではなく JavaScript で処理されます。

詳細は次のとおりです。

routes.rb で:

controller :sessions do
  get 'login' => :new
  post 'login' => :create
  delete 'logout' => :destroy
  get 'logout' => :destroy
end

そして、application.html.erb のフォーム:

<div class="btn-group" style="height: 20px;">
<form action="/#search" method="post">
    <input id="search" type="text" class="search-query span2" placeholder="Search Our Database">
    </form>
</div>   

そして、フォームを処理する JavaScript/CoffeeScript (この関数は、'URL/#search' が呼び出されたときに呼び出されます:

displaySearch = ->

  str = $("#search").val()

  html = "You have just searched for "
  html += "<strong>" + str + "</strong>"

  $("#appCanvas").html html

この問題を解決するためのヒントをいただければ幸いです :) どうもありがとうございました。よい一日を!

4

1 に答える 1

0

あなたが望むのは、フォームが送信されないようにすることだと思いますか? 次に、イベントを停止するか、コールバック メソッドで false を返すだけです。

$(myForm).submit -> false

/#search を投稿先の実際の URL として使用しようとしているようです。アンカー (#search) はサーバーに転送されていないため、Rails はこれをルーティングできず、現在の URL で通常の POST アクションを想定することができません。

Javascript で処理したい場合は、AJAX で実装してください。それ以外の場合は、このための新しいコントローラー/アクションを作成する必要があります。

于 2012-12-21T12:36:01.923 に答える