Простой поиск с помощью Datamapper и Sinatra - PullRequest
3 голосов
/ 21 апреля 2011

Я довольно новичок в Ruby и бэкэнд-разработке в целом.При этом я пытаюсь создать простую форму поиска.Я использую Sinatra в качестве основы и Datamapper в качестве своего ORM.Каков наилучший способ сделать это?Ниже приведена моя схема. Я хочу, чтобы действие поиска выполняло поиск как по плитке, так и по категории.

require 'sinatra'
require 'datamapper'


DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/cal.db")

class Event
  include DataMapper::Resource

  property :id,               Serial
  property :title,            String
  property :text,             Text
  property :contact_name,     String
  property :contact_email,    String
  property :location,         String
  property :event_start_time, String
  property :event_end_time,   String
  property :category,         String
  property :created_at,       DateTime
  property :approved,         Boolean, :default => false

end

DataMapper.auto_upgrade!


post '/search'  do
   @results = Event.all
   erb :layout
end

============ layout.erb

<form action="/search" method="post">
  <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 %>

1 Ответ

7 голосов
/ 21 апреля 2011

Самый простой поисковый запрос может выглядеть так:

@events = Event.all(:title.like => "%#{params[:query]}%") | Event.all(:category.like => "%#{params[:query]}%")
...