使用ruby和sinatra为我的博客提供简单的搜索表单

使用ruby和sinatra为我的博客提供简单的搜索表单,ruby,search,sinatra,sequel,Ruby,Search,Sinatra,Sequel,我在用续集。 在我的app.rb中,我写道 get '/search' do @post = Post.find(:Title => "%#{params[:query]}%") erb :'layout' end 布局.erb <form action="/search" method="get"> <input type="text" name="query"/><br /> <input type="submit"

我在用续集。 在我的app.rb中,我写道

get '/search'  do
  @post = Post.find(:Title => "%#{params[:query]}%")
  erb :'layout'
end
布局.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 %>
我得到的是:LocalJumpError at/search 没有给出区块(产量)。
那么该怎么做,或者我是否正确地完成了这段代码?提前谢谢。

我想问题是erb文件的名称layout.erb

Sinatra始终搜索layout.erb,如果您没有明确指出其他版面文件,则该文件将处理页面模板。此文件的格式为:

<!doctype html>
<html>
<head>
...
<body>
...
  <%= yield %> insert the content here
...
</html>

...
...
在此处插入内容
...
有两种解决方案:

  • 重命名layout.erb文件
  • 将erb调用替换为:
    erb:layout,layout:false

  • 你能从日志中发布整个错误消息吗?此外,您还向我们展示了您在任何地方都没有使用的方法
    search()
    ,您还使用了
    find()
    ,您应该在第一个代码段中使用
    where()
    <!doctype html>
    <html>
    <head>
    ...
    <body>
    ...
      <%= yield %> insert the content here
    ...
    </html>