2 Stimmen

Einfaches Suchformular für meinen Blog mit Ruby und Sinatra

Ich benutze Nachfolger. In meiner app.rb habe ich geschrieben

get '/search'  do
  @post = Post.find(:Title => "%#{params[:query]}%")
  erb :'layout'

Layout.erb

<% if @results %>

  <%@results.each do |r|%>

  <%end%>

    <%=r.title%>

<% end %>

Und zum blog_model.rb in der Post-Klasse füge dies hinzu:

def self.search(query)
  #where(:title, query) -> Dies würde eine genaue Übereinstimmung mit der Abfrage zurückgeben
  where("title like ?", "%#{query}%") 

Und ich bekomme diesen Fehler: LocalJumpError bei /search kein Block gegeben (yield). Was soll ich tun oder habe ich diesen Code richtig geschrieben? Vielen Dank im Voraus.

2voto

Thiago Lewin Punkte 2810

Ich vermute, das Problem liegt am Namen der erb-Datei, layout.erb.

Sinatra sucht immer nach einer layout.erb, wenn Sie nicht explizit eine andere Layout-Datei angeben, die das Seitenlayout steuern wird. Diese Datei hat die Form:

...

...
  <%= yield %> fügt den Inhalt hier ein
...

Es gibt zwei Lösungen:

  1. Benennen Sie die Datei layout.erb um.
  2. Ersetzen Sie den erb-Aufruf durch: erb :layout, layout: false

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X