我希望實作的目標
。在Rails中實作一個搜索功能。我已經寫好了代碼,但搜索功能卻無法作業。我應該怎么做? 我想在不使用gem的情況下實作它。
代碼
controller
class MoviesController < ApplicationController
???
def search
@movies = Movie.search(params[:search] )
結束。
???
end 。
模型
Movie < ApplicationRecord
def self.search(search)
if search
Movie.where(['name LIKE ?', "%#{search}%"] )
else
電影.全部
end
end end
end end
查看 索引和搜索
<! DOCTYPE html>
<html lang="en"/span>>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0" >
<%= stylesheet_link_tag 'movies'/span>, media: 'all'/span>%>
<title>Document</title>
</head>
<body>
<div class="search" >
<%= form_with url: search_path, method: 'get' do |form|%>
<%= form.text_field :keyword, value: @keyword %>
<%= form.submit "Search" %>
<% end %>
<div>
</div>
</div>
<div class="movies_item" >
<% @movies.each do |movie| %>
<div class="movies_data" >
<%=image_tag movie.image_url %>
<p><%= movie.name %> </p>
<p>細節</p>。
</div>
<%結束%>
</div>
</body>
</html>
搜索結果
<! DOCTYPE html>
<html lang="en"/span>>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0" >
<%= stylesheet_link_tag 'movies'/span>, media: 'all'/span>%>
<title>搜索</title>
</head>
<body>
<div class="search" >
<%= form_with url: search_path, method: 'get' do %>
<%= text_field_tag :search%>/span>
<%= submit_tag "Search" %>
<% end %>
</div>
<% @movies.each do |movie| %>
<div class="movies_data">
<%= image_tag movie.image_url %>
<p><%= movie.name %> </p>
<p> 細節 </p>
</div>
<% end %>
</body>
</html>
路線
Rails.application.routes.drawdo
范圍 :admin do
資源 :movies
獲得'search', to: 'movies#search'
end
end
錯誤[/h1
不會產生錯誤,但所有的DB資料將被輸出。
我嘗試過的東西。
?我洗掉了模型中的Movie.all以檢查行為,但所有的值都被輸出。
?使用rails c,where(name: "search_name")作業。
?然而,如果Movie.where(['name LIKE ? , "%search_name%"])并沒有得到值。(SQL的搜索方法是錯誤的。或者我不知道是否因為這個不能被檢索到,所以搜索功能不能被執行)
uj5u.com熱心網友回復:
你必須傳遞兩個獨立的引數,而不是一個陣列:
# correct
Movie.where('name LIKE ?', "%#{搜索}%")
# wrong
Movie.where(['name LIKE ?', "%#{search}%"] )
uj5u.com熱心網友回復:
我改變了:keyword, value: @keyword改為:search在View index和search中,它顯示正確。:search
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/332301.html
標籤:
上一篇:覆寫DeviseInvitable`invite!`方法,以便在邀請郵件中添加附件-Rails
下一篇:EF核心和SQL多級聯動
