0

我有一个 Rails 应用程序,它允许在/posts/search/:searchstring收到形式的获取请求时搜索帖子。当我使用浏览器的 url 栏输入搜索字符串时,我的功能没有问题,但我一直在尝试创建搜索表单。

如何在 rails 中创建一个 html 表单,允许我使用上述语法发送 get 请求?我会被卡住使用控制器方法重定向吗?我真的很想要这个功能,因为我坚信 URL 是 UX 的一部分,我讨厌像这样丑陋的 URL:

http://example.com/search?utf8=%E2%9C%93&q=searchstring&commit=Search
4

2 回答 2

1

表单会做表单会做的事情,如果你有一个使用 GET 的表单,它会将这些参数序列化到查询字符串中。

但是由于您使用的是get,因此您也不需要提交表单。相反,您可以将浏览器发送到 URL。

例如,在您的 JS 中的某处:

function doSearch(form) {
  // This assumes that the first input of your form is the search
  // box.  YMMV.
  var query = encodeURIComponent(form.elements[0].value);

  // just send the browser to the constructed URL
  window.location = form.action + "/" + query;

  // and return false to prevent the actual submit
  return false;
}

然后在你的html中:

<form action = "/posts/search" onsubmit="return doSearch(this)">
  <input type="text" name="searchstring" />
  <input type="submit" />
</form>
于 2013-04-23T15:30:00.187 回答
0

如何以这种方式添加表单:

<form method="get" action="<%= search_posts_url_path %>">#text input here with name "searchstring"</form>
于 2013-04-23T12:19:10.287 回答