【问题标题】:Simple Search With Datamapper and Sinatra使用 Datamapper 和 Sinatra 进行简单搜索
【发布时间】:2011-08-10 11:58:45
【问题描述】:

总的来说,我对 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

============ 布局.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 %>

【问题讨论】:

    标签: ruby search sinatra datamapper


    【解决方案1】:

    最基本的搜索查询可能是这样的:

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

    【讨论】:

    • 是的,我不能让它工作。表单上的方法应该是 post 请求吗?我不断收到“NameError at /search undefined local variable or method `query'”错误
    • 不,请求方法应该是 get 所以将 method="post" 更改为 method="get",但这不是您收到错误的原因。我更新了示例以匹配您的用例。
    猜你喜欢
    • 2013-12-05
    • 1970-01-01
    • 2012-11-12
    • 2011-04-07
    • 1970-01-01
    • 2019-09-22
    • 2016-04-22
    • 2011-11-07
    • 1970-01-01
    相关资源
    最近更新 更多