2012-12-21 4 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> 

그리고 자바 스크립트/커피 스크립트 여기

몇 가지 세부 사항입니다 양식 (이 함수는 'URL/# 검색'이 호출 될 때 호출됩니다.

displaySearch = -> 

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

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

    $("#appCanvas").html html 

이 문제를 해결하는 방법에 대한 귀하의 정보를 크게 주시면 고맙겠습니다 :) 감사합니다.

답변

0

내가 원하는 것은 양식이 제출되는 것을 방지하는 것입니다. 그런 다음 콜백 메서드에서 이벤트를 중지하거나 false를 반환하면됩니다.

$(myForm).submit -> false 

게시자가/# 검색을 실제 URL로 사용하여 게시하려했으나 걱정됩니다. 앵커 (#search)는 서버로 전송되지 않으므로 레일스는이 경로를 라우트 할 수 없으며 현재 URL에서 일반적인 POST 작업을 수행 할 수 없습니다.

자바 스크립트를 통해 처리하려면 AJAX로 구현하십시오. 그렇지 않으면 정말로 새로운 컨트롤러/액션을 만들어야합니다.

관련 문제