2014-10-02 53 views
0

我有4個可以在視圖上呈現的部分,但一次只能加載一個部分。我如何使用jQuery或ajax來點擊不同的部分?謝謝!如何使用Rails渲染4個部分中的一個,jquery/ajax

這是我的標題,我想激活4個部分。當你點擊一個,我想讓它在subnav下面渲染一個部分,並將其更改爲在subnav中處於活動狀態。

#subnav 
    %ul 
     %li 
     %a.active{:href => "dashboard-fans.html"} 
      %img{:alt => "", :src => image_path("icons/fans.svg")}>/ 
      Fans 
     %li 
     %a.active{:href => "dashboard-rewards.html"} 
      %img{:alt => "", :src => image_path("icons/rewards.svg")}>/ 
      Rewards 
     %li 
     %a{:href => "dashboard-payment-info.html"} 
      %img{:alt => "", :src => image_path("icons/creditcard.svg")}>/ 
      Payment Info 
     %li 
     %a{:href => "dashboard-profile.html"} 
      %img{:alt => "", :src => image_path("icons/edit.svg")}>/ 
      Profile 
+0

你能分享一些你現有的代碼嗎?你會有更多的運氣給我們更多的背景:) – opticon 2014-10-02 20:14:24

+0

是的,對不起! – TuxedoTomson 2014-10-02 20:27:44

回答

1

你可以做這樣的事情

<%= link_to 'Fans', {view: :dashboard_fans}, remote: true, class: 'active %>

將回調到相同的控制器作爲一個Ajax請求。然後,您可以創建一個javascript文件show.js.erb(例如,如果您的控制器操作是顯示)。

在JavaScript文件中,你可以做你的選擇:

<% if params[:view].present? %> 
    <% case params[:view] %> 
    <% when 'dashboard_fans' %> 
     $('#empty_div_in_show').html('<%= j render "path_to_your_partial" %>'); 
    <% end %> 
<% end %> 

這是很好的注意,case可能被淘汰,你可以通過view參數通過渲染部分,但最終可能會創造一些不良juju與相信最終用戶不要惹事。

或者,你可以不喜歡

%w(' dashboard_fans dashboard_rewards ').include?(params[:view]) which would be similar to using case`

同一種東西可以,如果你顯示的記錄一個巨大的索引,並且讓每個記錄的模式或東西被使用。不用爲每條記錄加載模態,您可以使用GID/ID /該對象的任何對象將AJAX請求發送回服務器,然後將模態渲染爲空的div。從那裏你可以設置模式顯示從JavaScript呈現。這將在應用程序上創建比載入所有模式更小的佔位空間。我知道這與你的問題沒有直接關係,但也是值得考慮的事情。