在rails中搜索用户输入的字符串

时间:2015-03-10 11:17:46

标签: ruby-on-rails ruby ruby-on-rails-4 ruby-on-rails-4.1

我正在尝试实现一个简单的字符串搜索。我有一个Book book模型,它有bookname,isbn,authname作为属性。我在index.html.haml的末尾添加了这个,以允许用户使用isbn搜索图书。

=form_tag({controller: "books_controller", action: "searchbook"}, :method => :get) do
  .search_field
    =text_field_tag :q
    =button_tag 'Go' , class: 'search-button' , type: :submit
%br

将此添加到我的book_controller.rb

def searchbook
    @searchedbook = Book.where(isbn: q)
end

将此添加到我的路线文件中:

Rails.application.routes.draw do
  resources :courses

  resources :books

  get 'books_controller/searchbook' => 'books_controller#searchbook'
end

当我转到http://localhost:3000/books后运行rails服务器后,我得到了所有书籍的列表。我可以看到列表末尾的输入框,当我输入一个isbn数字来搜索这本书时,这就是我得到的错误:

uninitialized constant BooksControllerController

当我运行rake路线时,我在列表中看到路线:

books_controller_searchbook GET    /books_controller/searchbook(.:format) books_controller#searchbook

我不确定那里出了什么问题。我想要做的就是获取用户输入的字符串并运行Book.where(isbn:" userinput")查询来查找该书。

1 个答案:

答案 0 :(得分:2)

查看错误uninitialized constant BooksControllerController是什么,这意味着它已经知道了#39;书籍'是一个控制器,但您已指定books_controller,因此它变为BooksControllerController

实际上你不必指定控制器字符串

试试这个

 get 'books/searchbook' => 'books#searchbook'

或者

match 'searchbook', to: 'books#searchbook', via: :get