2012-12-21 81 views
0

我有一個問題,我不能自己解決,所以我會很感激任何幫助。它涉及我的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 

我非常感謝你的提示,關於如何解決這個問題:) 非常感謝,祝你有美好的一天!

回答

0

我想你想要的是防止表單被提交?然後,您只需停止事件或在回調方法中返回false。

$(myForm).submit -> false 

恐怕您嘗試使用/#搜索作爲要發佈到的實際URL。您應該知道錨(#search)沒有被傳輸到服務器,因此Rails無法路由此選項,並對當前URL採取正常的POST操作。

如果你想通過Javascript處理它,用AJAX實現它。否則,你真的應該爲此做一個新的控制器/操作。