我有一个我正在开发的 Rails 应用程序,它是一个 API 数据库:http: //hapily.herokuapp.com/它已经有一个我在 Rails 中制作的有效搜索框,但我想使用 angular。 js 让搜索在不离开主页的情况下工作。我似乎无法获得与我的 Rails 数据库连接的角度。这是搜索表格:
<form class="navbar-search" method="get" action="/apis/search" id="search">
<input type="text" class="search-query" placeholder="Search" name="query" ng-model="query">
</form>
这是我的 apis_controller.rb 中的搜索方法:
def search
@results = Api.where("name ILIKE ? OR description ILIKE ? OR category ILIKE ?", "%#{params[:query]}%", "%#{params[:query]}%", "%#{params[:query]}%").all
end
这是我的 js 搜索控制器:
app = angular.module("Hapily", ["ngResource"])
@SearchCtrl = ($scope, $resource) ->
Search = $resource('/search/:query', {query:"@query"})
$scope.results = Search.get()
这是我当前的搜索页面视图:
<% @results.each do |api| %>
<div class="box" ng-repeat="result in results | filter:query">
<div class="api-favicon">
<%= image_tag("http://www.google.com/s2/favicons?domain_url=" + api.url) %>
</div>
<%= link_to api.name, apipage_path(:id => api.id) %>
<p class="category"><%= api.category %></p><br><br>
<%= api.description %><br><br>
Votes: <%= Vote.where("api_id = ?", api.id).count %>
<%= link_to image_tag('grayarrow.gif'), votes_path(api_id: api.id, value: 1), method: :post %>
</div>
<% end %>
</div>
现在所有的 API 都显示在索引页面上,当用户在导航栏中的搜索框中键入一个术语时,他们会被定向到 /search?query=searchterm 我应该如何更改我的代码以获取匹配的 API 以呈现索引页?我在角度和导轨方面很新,所以我可能会离开这里。任何帮助表示赞赏!