试图实现一个Ajax函数rails 3.load()

时间:2012-11-12 20:09:57

标签: ruby-on-rails-3 jquery

这是我第一次尝试在rails 3中实现Ajax调用,虽然我使用的是.load函数(我仍然希望这是Ajax,否则我不能理解这个错误)

所以我有一个搜索表单,通过在不同页面上呈现的get请求返回结果,我希望结果显示在与搜索表单相同的页面上

<%= form_tag({:controller => 'search', :action => 'search'}, {:method => 'get'})  do |select| %>
<%= label_tag :search, "Enter Keywords Here" %>
<%= text_field_tag :search, params[:search] %>
 (I have shortened the form)
<%= submit_tag "Search", :class => "searchbutton" %>
<% end %>

Jquery / Ajax调用

$(document).ready(function() {
$('.searchbutton').click(function() {
$('#searchres').load('shared/searchresults');

});

});

查看

<h3>Search Recipes here</h3>
  <%= render 'shared/searchrecipes' %>
    <div id ="searchres">
</div>

我做错了什么?

1 个答案:

答案 0 :(得分:1)

由于这是一个AJAX调用,你需要在remote: true之外添加method: :get,得到一个像这样的html参数哈希:

{:method => 'get', :remote => true}

当Rails找到远程调用时,它会自动阻止默认值。否则,您需要像这样修改javascript:

$(document).ready(function() {
  $('.searchbutton').click(function(evt) {
    $('#searchres').load('shared/searchresults');
    evt.preventDefault();
  });
});