我有一个带有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)
答案 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);
});
});
那应该做的工作!