我正在尝试生成仅在单击搜索时生成表格的应用程序,但它似乎无效。
我试过的是以下内容。
控制器:
def index
@q = Link.ransack(params[:q])
@links = @q.result(distinct: true)
respond_to do |format|
format.html # index.html.erb
format.js #index.js.erb
end
end
index.html.erb:
<h1>Listing Links</h1>
<!= Implements search feature using gem "Ransack" =>
<p><%= link_to 'Advanced Search', advanced_search_links_path %></p>
<%= search_form_for @q, remote: true do |f| %>
<%= f.label :name_or_address_cont %>
<%= f.search_field :name_or_address_cont %>
<%= f.submit class: 'search_submit' %>
<% end %>
<div id = 'result_table'>
</div>
<script type="text/javascript">
var ready;
var result_table = $('#result_table');
ready = function(){
$('.search_submit').click(function(event){
$('#result_table').replaceWith('<%= j render('table') %>');
});
};
$(document).ready(ready);
$(document).on('page:load',ready);
</script>
_table.html.erb:
<!= Implements sorting attributes using gem "Ransack" =>
<table>
<thead id= 'result_head'>
<tr>
<th><%= sort_link @q, :name, "Name" %></th>
<th><%= sort_link @q, :address, "Address" %></th>
<th>Availablity</th>
<th>like</th>
<th>dislike</th>
<th colspan="3"></th>
</tr>
</thead>
<tbody>
<% @links.each do |link| %>
<tr>
<h2>
<td><%= link_to link.name, link %><br></td>
<td><%= link_to link.address, link %><br></td>
<td><%= link_to link.bedroom, link %><br></td>
<td><%= link.get_upvotes.size %></td>
<td><%= link.get_downvotes.size %></td>
</h2>
</tr>
</tbody>
<% end %>
</table>
我遇到的问题是每当我点击提交时,
它始终生成数据库
中每个数据的表无论我搜索哪一封信。
我甚至不确定在第一次生成表后,当我点击搜索另一个搜索时,是否重新生成表。
我想知道Ajax或者遗漏了什么。
我非常感谢你的帮助。
请注意我使用Ransack来实现我的搜索功能。
感谢。
答案 0 :(得分:0)
<%= j render('table') %>
将仅在服务器端进行评估。请阅读本指南:
http://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html