我有一个我自己无法解决的问题,所以我很感激任何帮助。它涉及我的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 :(得分:0)
我认为你想要的是阻止提交表单?然后你只需要停止事件或在你的回调方法中返回false。
$(myForm).submit -> false
我担心您已尝试使用/ #search作为实际网址发布到。您应该知道锚点(#search)没有被转移到服务器,因此Rails无法对此进行路由并对当前URL采取正常的POST操作。
如果您想通过Javascript处理它,请使用AJAX实现它。否则你真的应该为此做一个新的控制器/动作。