使用rails中的ajax显示更新的数据

时间:2014-03-13 00:05:30

标签: javascript ruby-on-rails ajax

我有一个带有home方法的static_pages_controller。

home.html.erb页面上,我有一个按钮:

<%= button_to "Refresh recommendations",  
{action: :home, reset: true},method: :get,remote: true , class: 'btn btn-success'%>

当用户点击我想要的按钮让控制器重新计算推荐列表时,这是有效的, 我遇到的问题是更新包含新建议列表的div。

static_pages_controller#家

def home
 puts "PARAMS #{params}"

 respond_to do |format|
   format.html{}
   format.js 
 end
end

从各种指南和帖子我一直关注我应该有一个home.js.erb并且根据我的理解,当进行ajax调用时,控制器应该执行home.js.erb - 它当前没有执行

我已将routes.rb包括在内,只是因为某些事情搞砸了。

root "static_pages#home"
post '/spec', to: "static_pages#spec_rec"

提交ajax请求时,服务器将输出以下内容:

Started GET "/refresh" for 127.0.0.1 at 2014-03-13 12:11:27 -0400
Processing by StaticPagesController#refresh as JS
Rendered static_pages/_refresh.html.erb (0.1ms)

1 个答案:

答案 0 :(得分:1)

在你的路线文件中,你应该有像

这样的东西
  get 'home/refresh', to: 'home#refresh'

在您的家庭控制器中,您应该

def refresh
  render partial: 'refresh'
end

您应该在视图主文件夹中创建一个部分_refresh,其中包含刷新的html

在你看来

<%= button_to "Refresh recommendations", refresh_home_path, remote: true, class: 'refresh btn btn-success', type: :html %>

javascript:
  $(document).ready(function() {
    $(document).on('ajax:success', ".refresh", function(evt, data, status, xhr){
      $(selector for your div).html(data);
    });       
  });

那应该做的工作!