Rails 4:无法通过JQuery获得我的动态表生成工作

时间:2015-08-03 07:00:05

标签: jquery ruby-on-rails ruby ajax ruby-on-rails-4

我正在尝试生成仅在单击搜索时生成表格的应用程序,但它似乎无效。

我试过的是以下内容。

控制器:

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来实现我的搜索功能。

感谢。

1 个答案:

答案 0 :(得分:0)

当您发出请求时,

<%= j render('table') %>将仅在服务器端进行评估。请阅读本指南: http://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html