如何使用Sinatra和Datamapper搜索所有包含关键字的帖子?

时间:2019-05-04 05:44:02

标签: html ruby forms sinatra datamapper

我对全栈开发还很陌生,我正在尝试使用一个简单的搜索表单来工作。该网页应该将用户重定向到包含所有包含关键字的视频的列表的页面。每当输入存在的标题时,在/ posts /:title / search都会出现:NoMethodError

我尝试使用查询,但失败了。

这是我的app.rb。我查询所有包含:title的视频。

get "/posts/:title/search" do
    # authenticate!
    @results = Video.all(title: params[:title])

    if @results
        erb :search_success
    else
        flash[:error] = "Video not found."
        erb :search_success
    end

end

这是search_success.erb,我想要在其中包含标题中包含关键字的视频的列表。

<div class="container">
    <% @results.each do |r| %>
        <h1><%= r.title %></h1>
    <% end %>
</div>

这是导航表单所在的navigation.erb。

<form action="/posts/:title/search" method="get">
        <input type="text" type="text" placeholder="Search" aria-label="Search">
        <button type="submit">Search</button>
  </form>

1 个答案:

答案 0 :(得分:0)

尝试更改

@results = Video.all(title: params[:title])

@results = Video.all(:title.like => "%#{params[:title])}%")

获取不需要完全匹配的答案(例如,区分大小写等)

在搜索表单中,您还具有两个 type 属性。您应该将其中之一更改为

name="title"