如何使用Sinatra和Sequel为我的帖子创建搜索表单?

时间:2013-12-09 00:21:39

标签: ruby forms search sinatra sequel

我是Ruby的新手,正在使用Sinatra和Sequel。我正在尝试实现一个表单来搜索帖子的标题。

我在我的控制器中这样做:

post '/search'  do
@post = Post.all(:Title.like => "%#{params[:query]}%")
erb :layout
end

我在layout.erb中执行此操作:

<form action="/search" method="get">
 <input type="text" name="query"/><br />   
 <input type="submit" />
</form>
<% if @results %>
 <table>
  <%@results.each do |r|%>
  <tr valign="top">
  <td><%=r.Title%></td>
  </tr>
  <%end%>
 </table>
<% end %>

当我提交时,这是我指向的网址:

http://localhost:4567/search?query=post 

但它显示“Sinatra不知道这个小曲”。屏幕。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

您的表单正在进行HTTP GET

<form action="/search" method="get">

但您的Sinatra操作被定义为接收HTTP POST请求。

post '/search'  do

我认为令你困惑的是你有一个名为Post的课程。操作中的get和post不是类名,而是REST操作。查看routing