在 rails 中搜索用户输入的字符串
Search User inputted string in rails
我正在尝试实现一个简单的字符串搜索。我有一个 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
在 运行 连接 rails 服务器后,当我转到 http://localhost:3000/books 时,我得到了所有书籍的列表。我可以在列表末尾看到输入框,当我输入一个 isbn 编号来搜索这本书时,这是我得到的错误:
uninitialized constant BooksControllerController
当我 运行 搜索路线时,我在列表中看到路线:
books_controller_searchbook GET /books_controller/searchbook(.:format) books_controller#searchbook
我不确定那里出了什么问题。我想要做的就是使用用户输入的字符串和 运行 Book.where(isbn: "userinput") 查询来查找这本书。
看看错误是什么uninitialized constant BooksControllerController
,这意味着它已经知道'books'是一个控制器,但是你指定了books_controller
所以它变成了BooksControllerController
实际上您不必指定控制器字符串
试试这个
get 'books/searchbook' => 'books#searchbook'
或
match 'searchbook', to: 'books#searchbook', via: :get
我正在尝试实现一个简单的字符串搜索。我有一个 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
在 运行 连接 rails 服务器后,当我转到 http://localhost:3000/books 时,我得到了所有书籍的列表。我可以在列表末尾看到输入框,当我输入一个 isbn 编号来搜索这本书时,这是我得到的错误:
uninitialized constant BooksControllerController
当我 运行 搜索路线时,我在列表中看到路线:
books_controller_searchbook GET /books_controller/searchbook(.:format) books_controller#searchbook
我不确定那里出了什么问题。我想要做的就是使用用户输入的字符串和 运行 Book.where(isbn: "userinput") 查询来查找这本书。
看看错误是什么uninitialized constant BooksControllerController
,这意味着它已经知道'books'是一个控制器,但是你指定了books_controller
所以它变成了BooksControllerController
实际上您不必指定控制器字符串
试试这个
get 'books/searchbook' => 'books#searchbook'
或
match 'searchbook', to: 'books#searchbook', via: :get