【问题标题】:Simple search form for my blog with ruby and sinatra使用 ruby​​ 和 sinatra 搜索我的博客的简单搜索表单
【发布时间】:2013-12-05 18:33:31
【问题描述】:

我正在使用续集。 在我的 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 %>

对于博文类中的 blog_model.rb:

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

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

【问题讨论】:

  • 能否请您发布日志中的整个错误消息?您还向我们展示了您甚至没有在任何地方使用的方法 search(),您还使用了 find(),您应该在第一个 sn-p 中使用 where()

标签: ruby search sinatra sequel


【解决方案1】:

我猜问题是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

【讨论】:

    猜你喜欢
    • 2011-08-10
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2013-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多