레일 검색 막대를 만드는 방법을 배우고 있습니다. 영화라는 모델이 있습니다. 제목별로 영화를 검색하고 결과를 표시하고 싶습니다. 나는 "색인"이 아닌 "새로운"관점에서 이것을하고있다. 내 결과에 will_paginate도 사용하고 있습니다. 현재 영화가있는 경우에도 내 검색 결과가 표시되지 않습니다. 검색을하지 않으면 여전히 모든 영화를 볼 수 있지만 분명히 검색 기능이 필요합니다. 누군가 도울 수 있습니까?검색 결과가 올바르지 않습니다.
새 영화보기 :
<div class="row">
<div class="col-xs-12">
<h2 class="white">Home</h2>
<hr />
<h4 class="white">Add Movie</h4>
<%= form_for @movie, class: 'form-horizontal' do |m| %>
<div class="form-group">
<label for="title" class="white">Title: </label><br/>
<%= m.text_field :title, class: 'form-control' %>
</div>
<div class="form-group">
<label for="title" class="white">Year: </label><br/>
<%= m.text_field :year, class: 'form-control' %>
</div>
<div class="form-group">
<%= m.submit %>
<div class="form-group">
<% end %>
</div>
</div>
<hr />
<div class="row">
<div class="col-xs-12">
<h4 class="white">Database</h4>
<%= form_tag new_movie_path, :method=> 'get' do %>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search" %>
<% end %>
<br />
<% if @movies.exists? %>
<div class="bg_white">
<table class="table table-hover table-striped">
<tr>
<th>
Title
</th>
<th>
Status
</th>
<th>
Year
</th>
<th>
Delete
</th>
<th>
Edit
</th>
</tr>
<% @movies.each do |m| %>
<tr>
<td>
<%= link_to m.title, new_movie_rental_path(m) %>
</td>
<td>
<%= m.status %>
</td>
<td>
<%= m.year %>
</td>
<td>
<%= link_to "Delete", movie_path(m), method: :delete %>
</td>
<td>
<%= link_to "Edit", edit_movie_path(m) %>
</td>
</tr>
<% end %>
</table>
</div>
<%= will_paginate @movies, class: 'white' %>
<% else %>
<p class="white">No movies have been entered</p>
<% end %>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<hr />
<%= link_to "Add Customer", new_customer_path, class: 'white' %>
</div>
</div>
<br /><br />
영화 모델 :
class Movie < ApplicationRecord
has_many :rentals, dependent: :destroy
def status
if self.rentals.empty?
return "In Stock"
else
self.rentals.order(borrowed_on: :desc).each do |x|
if !x.returned_on.nil?
return "In Stock"
else
return "Rented"
end
end
end
end
def self.search(search)
if search
@movies = Movie.where(["title","%#{[:search]}%"])
else
all
end
end
end
영화 컨트롤러
def new
@movie = Movie.new
@movies = Movie.search(params[:search]).order(title: :asc).paginate(:page => params[:page], :per_page => 15)
end
하면, 로그를 확인하셨습니까
은 SQL 주입 및 PARAM 보간에 읽기? 이 요청의 레일즈 서버 로그를 게시 할 수 있습니까? –"작동하지 않음"은별로 도움이되지 않습니다. 이 코드는 무엇이고, 현재 무엇을하고 있습니까? – tadman
결과를 표시하지 않습니다. 오류가 없으며 결과 만 알려주지 않습니다. 테이블이 비어 있습니다. –