簡體   English   中英

形式干擾鐵軌路線

[英]Form interferes with rails routes

我有一個我自己無法解決的問題,因此不勝感激。 它涉及我的Rails應用程序,其中包含用戶身份驗證。

問題是,我想要一個搜索功能的輸入表單,該輸入表單將輸入發布到處理搜索查詢的新頁面上。 但這是行不通的,因為Rails認為POST屬於整個用戶身份驗證,然后將我重定向到登錄頁面。

所以問題是,如何將這一輸入表單與其余所有表單分開。 我以為我可能需要一個新的控制器來進行搜索,但是整個搜索不是由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

非常感謝您提供有關解決此問題的技巧:)非常感謝,並祝您愉快!

我認為您要防止提交表單? 然后,您僅需停止事件或在回調方法中返回false。

$(myForm).submit -> false

恐怕您嘗試使用/#search作為實際URL進行發布。 您應該知道錨點(#search)不會傳輸到服務器,因此Rails不能路由該路由,並假設對當前URL進行常規POST操作。

如果要通過Javascript處理,請使用AJAX實現。 否則,您確實應該為此執行新的控制器/操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM