像其他答案一樣,你會想使用ajax。 Rails現在通過jquery_ujs.js文件和gem與jquery進行了一些很好的Ajax集成。您應該首先安裝這個gem並運行自述文件中提到的生成器:https://github.com/rails/jquery-ujs
有4-5個步驟可以採用:在您的視圖中,添加遠程鏈接以及div以接收返回的內容。創建一個與您的控制器操作命名相同的.js.erb文件,.js.erb文件呈現給您的視圖的部分以及處理遠程調用的控制器操作。您可能需要添加一條匹配控制器#動作的路線到您的新動作。
然後設置你的頁面與div加載其部分內容。部分將在ajax調用期間重新加載。這假定你的控制器被命名爲排序,你的操作是album_select。
<div id="panels">
<div id="dynamicLoadingPanel">
<%=render :partial=>'album_select'%>
</div>
<%=link_to 'link text', :url=>'/sort/album_select/params', :remote=>'true', :id=>'navButton'%>
</div>
或者使用jQuery和你的鏈接onclick事件:
$("#navButton").bind('click',function(){
//post to the controller/action/params
$.post("/sort/album_select?album=100");
});
在你的控制器
def album_select
@variables_for_your_view
respond_to do |format|
format.js
end
# or use the new respond_with(@variables), and make sure to declare respond_to in your controller after the class definition
end
在你album_select.js.erb文件
$("#dynamicLoadingPanel").html("<%=escape_javascript(render :partial=>"album_select")%>");
也許會發出警報('works!');在這裏以及確保一切都連接起來......我發現很難在.js.erb文件中調試jQuery。雙重檢查報價,JavaScript轉義和其他容易錯過的JavaScript錯誤。
在您的局部
<p>info I just returned with new instance variables and fanciness</p>
有助於手頭上有一個JavaScript調試器,和/或tail -f
您的日誌文件。
可能爲涉及的其他頁面添加一些代碼?通常語法和函數調用是我需要看到的。謝謝 – EverTheLearner
只是更新了一點答案 – Shanison
這是行不通的。對於URL我使用RoR路由路徑嗎? jQuery中有一個錯誤,因爲它停在那裏。 – EverTheLearner