这是我第一次尝试在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>
我做错了什么?
答案 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();
});
});