我在事件頁面視圖中有4個選項卡部分。我有它的工作地點,每個選項卡的所有內容都是在請求事件頁面時獲取和渲染的。這似乎不是一個好的解決方案的可伸縮性...如何使用AJAX爲每個標籤獲取內容? Rails4,Bootstrap3
如何獲取每個選項卡的內容使用AJAX時,單擊一個選項卡?
(第一次做...看起來在理論上很簡單,但沒有得到它的工作)
我嘗試添加remote: true
到標籤聯繫,但不與在頁面引用發揮出色 - 它對所有選項卡進行相同的獲取請求Events#Show
,這使得難以確定請求哪個選項卡內容。如果我將選項卡href更改爲它們各自的控制器鏈接,那麼它將打破引導選項卡切換。我失去了任何一種方式。
每個標籤的內容被分成獨立的控制器,因此可以獲取單獨的內容。
對於選項卡#2,我需要獲取以前nav-pill
處於活動狀態的內容。如果我在選項卡2上,我想將其內容從概覽切換到詳細信息,並使用nav-pills
按鈕鏈接返回。
使用Rails 4 w/bootstrap 3,haml,coffeescript。
事件/ show.html.haml
/ Nav tabs
%ul.nav.nav-tabs.color
%li.active
=link_to "Tab1", "#tab1", html_options = { "data-toggle" => "tab" }
%li
=link_to "Tab2", "#tab2", html_options = { "data-toggle" => "tab" }
%li
=link_to "Tab3", "#tab3", html_options = { "data-toggle" => "tab" }
%li
=link_to "Tab4", "#tab4", html_options = { "data-toggle" => "tab" }
/Tab panes
.tab-content
.tab-pane.active#tab1
%p Fetch content
.tab-pane.active#tab2
%ul.nav.nav-pills
%li.active= link_to 'Overview', "#overview", html_options = { "data-toggle" => "tab"}
%li= link_to 'Details', "#details", html_options = { "data-toggle" => "tab"}
.tab-content
.tab-pane.active#overview
%p Fetch overview
.tab-pane.active#details
%p Fetch details
.tab-pane.active#tab3
%p Fetch content
.tab-pane.active#tab4
%p Fetch content
控制器/ events_controller.rb
def show
# currently have several database queries to get data for each tab :(
respond_to do |format|
format.html
format.js
end
end
視圖/活動/ show.js.erb(這是爲remote:true
的情況,但應在每個選項卡的相應控制器視圖中)
$('div#tab2').append("<%= escape_javascript(render(partial: 'overview', locals: {names: @names, genders: @genders, ages: @ages})) %>")
我不是一個軌道的人,但據我瞭解,您想要重新要求使用引導選項卡的「show.bs.tab」事件並在該事件中使用ajax獲取您的內容。我輸入了一個答案,但是因爲我對Rails瞭解不多,所以我會問你是否對HTML/jQuery只有答案感興趣? – swazza85
@ swazza85是的,這可能會有所幫助。我可以填寫Rails一面。 – HM1