表格干扰铁路路线

时间:2012-12-21 12:03:46

标签: jquery ruby-on-rails forms post 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

我非常感谢您提供有关如何解决此问题的提示:) 非常感谢,祝你有个美好的一天!

1 个答案:

答案 0 :(得分:0)

我认为你想要的是阻止提交表单?然后你只需要停止事件或在你的回调方法中返回false。

$(myForm).submit -> false

我担心您已尝试使用/ #search作为实际网址发布到。您应该知道锚点(#search)没有被转移到服务器,因此Rails无法对此进行路由并对当前URL采取正常的POST操作。

如果您想通过Javascript处理它,请使用AJAX实现它。否则你真的应该为此做一个新的控制器/动作。