2016-08-04 86 views
0

我正在單頁面網站上工作,並且已經獲得ajax加載的模板以插入到正在工作的網站的內容部分。但是,使用參數在多個模板中執行此操作時遇到問題。Ruby on Rails - 在.js.erb中修改嵌入式Ruby的一部分

我有5個模板,共享/博客,共享/項目等

在我的控制,我在做一個AJAX調用 '取代'

pages = ['blog', 'projects', 'resume', 'gallery', 'contact'] 

def replace 
    @content = params[:content] 
    if not pages.include? content 
    content = 'blog' 
    end 
    respond_to do |format| 
    format.js 
    end 
end 

在replace.js。 ERB,我有這樣的代碼:

$(".content_inner").html("<%= j render(:partial => 'shared/blog') %>"); 

我一直只是說「共享/博客」,因爲它適用於裝載博客,如果我把嵌入的Ruby靜態這樣。但是,我無法弄清楚如何將'shared'/ blog'的'blog'部分替換爲@content變量中的任何內容。我試過#{content}之類的東西,但無濟於事。

(它確實正確地接收內容的變量,這個問題就是使用它)

任何幫助,將不勝感激!

謝謝。

回答

0

字符串插值需要雙引號。你是後:

$(".content_inner").html("<%= j render("shared/#{@content}") %>"); 

的幾個注意事項:

  • :partial =>一直沒有必要 Rails中。只需使用render <partial_name>即可。
  • 導軌已經有一個地方來存儲您的共享部分:app/views/application。您應該將共享的分部移動到那裏,然後您可以簡單地使用render(@content)來渲染它們。這對於Rails是如何工作很重要,因爲它允許您覆蓋控制器特定視圖路徑中的部分內容。例如,如果它存在,則調用render("blog")將呈現app/views/<controller_name>/blog.js.erb,否則將回退到app/views/application/blog.js.erb
+0

非常感謝!這工作!有點新來RoR所以不認爲這樣做。 –