2014-03-13 47 views
0

我有一個帶有home方法的static_pages_controller。用rails中的ajax顯示更新數據

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

在你的路由文件,你應該有類似

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); 
    });  
    }); 

這應該做的工作!

+0

試圖解決這個問題我得到錯誤沒有路由匹配帖子「/刷新」。我是否需要強制button_to作爲獲取請求? – Derptacos

+0

您不應該使用post/refresh,而應該使用rails創建的refresh_home_path,正如我的答案中所示。目前建議的方式是使用「get」而不是「post」 – Danny

+0

我遇到的問題是javascript永遠不會被調用 - >我甚至改變了js以提醒(this)來測試是否它被稱爲。病毒更新我的主要帖子與服務器的信息 – Derptacos