2012-12-21 50 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实现它。否则,你真的应该为此做一个新的控制器/操作。