ruby-on-rails - 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
有谁知道问题可能来自哪里?
先感谢您 !
解决方案
我相信问题出在您的搜索表单中。在那种形式下,你有
<%= search_form_for @q, remote: true do |f| %>
该remote: true
部分说使用 JavaScript 在页面上呈现结果而无需刷新页面。您的控制器中没有呈现 Javascript 的选项。尝试移除remote: true
部件,您应该会在视图中看到结果。