首页 > 解决方案 > Ransack结果不显示在页面中

问题描述


大家好,

我正在尝试使用 ransack gem,遵循https://www.botreetechnologies.com/blog/implementing-advanced-search-in-ruby-on-rails-with-ransack上的教程。我想它正在工作,因为当我使用本地控制台和检查我的本地服务器时,我得到了很好的结果。但是,我的索引页面没有显示结果,它一直显示所有学生的列表,并且 url 也没有改变(我想它应该呈现类似http://localhost:3000/students?utf8=%E2 %9C%93&q%5Bname_cont%5D=o&commit=Search,但我不断收到http://localhoast:3000/students

这是我的代码:

views/students/index.html.erb:

<p id="notice"><%= notice %></p>

<%= search_form_for @q, remote: true do |f| %>
 <%= f.label :name_cont, 'Full Name' %>
 <%= f.search_field :name_cont %>
 <%= f.submit %>
<% end %>

<h1>Students</h1>

<table>
 <thead>
   <tr>
     <th>Name</th>
     <th>Age</th>
     <th>Marks</th>
     <th colspan="3"></th>
   </tr>
 </thead>

 <tbody>
   <% @students.each do |student| %>
     <tr>
       <td><%= student.name %></td>
       <td><%= student.age %></td>
       <td><%= student.marks %></td>
       <td><%= link_to 'Show', student %></td>
       <td><%= link_to 'Edit', edit_student_path(student) %></td>
       <td><%= link_to 'Destroy', student, method: :delete, data: { confirm: 'Are you sure?' } %></td>
     </tr>
   <% end %>
 </tbody>
</table>

和控制器/students_controller.rb :

 def index
    @q = Student.ransack(params[:q])
    @students = @q.result
    puts @students
  end

有谁知道问题可能来自哪里?
先感谢您 !

标签: ruby-on-railsransack

解决方案


我相信问题出在您的搜索表单中。在那种形式下,你有

<%= search_form_for @q, remote: true do |f| %>

remote: true部分说使用 JavaScript 在页面上呈现结果而无需刷新页面。您的控制器中没有呈现 Javascript 的选项。尝试移除remote: true部件,您应该会在视图中看到结果。


推荐阅读