Я в настоящее время застрял с функцией поиска для сообщения в блоге. Контроллер и рендеринг html, казалось, работали хорошо, но я не видел никакого обновления из браузера, Chrome.
С самого начала сценария поиска оно переходит к _navbar. html .erb as ниже
<%= form_with url: admin_posts_path, method: "get" do %>
<%= text_field_tag :search, params[:search], id: "input-search", placeholder: "Search Posts" %>
<% end %>
, и он идет к posts_controller.rb, как показано ниже
def index
if params[:search]
@posts = Post.search(params[:search]).all.order('created_at DESC').paginate(per_page: 3, page: params[:page])
puts "&&&&&&&&&&&&&&&&&"
p @posts
puts "###################"
else
@posts = Post.all.order('created_at DESC').paginate(per_page: 3, page: params[:page])
end
end
Я нашел, что значение @posts получило правильный результат, используя пут через журнал сервера. Однако, наконец, после рендеринга index. html .erb, как показано ниже, браузер вообще не обновляет обработанные html. Он просто остался текущей страницей.
<div class="main">
<section>
<a href="<%= new_admin_post_path %>"><button class="create-button">Create New</button></a>
<% if @posts.exists? %>
<% @posts.each do |post| %>
<article class="article-summary">
<h1 class="article-title"><%= post.title %></h1>
<p class="article-content"><%= truncate post.body, length: 200 %></p>
<p class="article-created-at"><%= post.created_at.to_time.strftime('%B %e at %l:%M %p') %></p>
<p class="article-command"><a href="<%= edit_admin_post_path(post) %>"><button>Edit</button></a> <%= link_to button_tag("Delete"), admin_post_path(post), method: :delete, data: { confirm: 'Are you sure?' } %></p>
<%= image_tag 'https://placekitten.com/1000/400', class: "article-image" %>
</article>
<% end %>
<%= will_paginate @posts, class: "page"%>
<% else %>
<h2>There is no post</h2>
<% end %>
</section>
</div>
Когда я увидел журнал сервера, он определенно отобразил результаты поиска, но я понятия не имею, почему экран браузера ничего не меняет.
Это журнал сервера
Started GET "/admin/posts?search=nine" for ::1 at 2020-04-29 00:03:15 +1000
Processing by Admin::PostsController#index as JS
Parameters: {"search"=>"nine"}
&&&&&&&&&&&&&&&&&
Post Load (1.1ms) SELECT "posts".* FROM "posts" WHERE (title like '%nine%' OR body like '%nine%') ORDER BY created_at DESC LIMIT $1 OFFSET $2 [["LIMIT", 3], ["OFFSET", 0]]
↳ app/controllers/admin/posts_controller.rb:45:in `p'
#<ActiveRecord::Relation [#<Post id: 9, title: "Blog Post nine", category_id: 1, user_id: 3, tags: "rails", image: nil, body: "Lorem ipsum dolor sit amet, consectetur adipiscing...", created_at: "2020-04-28 12:41:46", updated_at: "2020-04-28 12:41:46">]>
###################
Rendering admin/posts/index.html.erb within layouts/admin/application
Post Exists? (0.4ms) SELECT 1 AS one FROM "posts" WHERE (title like '%nine%' OR body like '%nine%') LIMIT $1 OFFSET $2 [["LIMIT", 1], ["OFFSET", 0]]
↳ app/views/admin/posts/index.html.erb:4
CACHE Post Load (0.0ms) SELECT "posts".* FROM "posts" WHERE (title like '%nine%' OR body like '%nine%') ORDER BY created_at DESC LIMIT $1 OFFSET $2 [["LIMIT", 3], ["OFFSET", 0]]
↳ app/views/admin/posts/index.html.erb:5
Rendered admin/posts/index.html.erb within layouts/admin/application (Duration: 4.4ms | Allocations: 1640)
[Webpacker] Everything's up-to-date. Nothing to do
Rendered partials/_navbar.html.erb (Duration: 0.9ms | Allocations: 909)
Rendered partials/_footer.html.erb (Duration: 0.2ms | Allocations: 75)
Completed 200 OK in 28ms (Views: 15.6ms | ActiveRecord: 1.5ms | Allocations: 14931)
Поиск изображения