我正在使用续集。 在我的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 没有给出块(产量)。 那么做什么或者我是否正确完成了这段代码?提前谢谢。
答案 0 :(得分:2)
我猜问题是erb文件的名称, layout.erb 。
Sinatra总是会搜索 layout.erb ,如果您没有明确指出其他布局文件,则会处理页面模板。该文件的格式为:
<!doctype html>
<html>
<head>
...
<body>
...
<%= yield %> insert the content here
...
</html>
有两种解决方案:
erb :layout, layout: false