[英]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.