我是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不知道这个小曲”。屏幕。
我在这里缺少什么?
答案 0 :(得分:2)
您的表单正在进行HTTP GET
<form action="/search" method="get">
但您的Sinatra操作被定义为接收HTTP POST请求。
post '/search' do
我认为令你困惑的是你有一个名为Post的课程。操作中的get和post不是类名,而是REST操作。查看routing。