我的博客与ruby和sinatra的简单搜索表单

时间:2013-11-21 10:31:33

标签: ruby search sinatra sequel

我正在使用续集。 在我的app.rb中,我写了

get '/search'  do
  @post = Post.find(:Title => "%#{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 %>

对于post class中的blog_model.rb:

def self.search(query)
  #where(:title, query) -> This would return an exact match of the query
  where("title like ?", "%#{query}%") 
end

我得到的是:/ search的LocalJumpError 没有给出块(产量)。 那么做什么或者我是否正确完成了这段代码?提前谢谢。

1 个答案:

答案 0 :(得分:2)

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

Sinatra总是会搜索 layout.erb ,如果您没有明确指出其他布局文件,则会处理页面模板。该文件的格式为:

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

有两种解决方案:

  1. 重命名 layout.erb 文件。
  2. 通过以下方式更换erb通话:erb :layout, layout: false