簡體   English   中英

將部分視圖注入div標簽

[英]Inject partial View to div tag

我遇到一種情況,我想根據按鈕的點擊動態更改一個div標簽的內容。 對於每個按鈕,單擊“我想注入一些html.erb部分”。

為什么這樣的東西行不通:

$('#my_div').append '<%= escape_javascript(render("shared/my_partial")) %>'

我的部分采用以下格式: _my_partial.html.erb

謝謝您的幫助。

好的,這里有幾個問題:

  1. 您沒有將div替換綁定到事件嗎?
  2. 您在front-end javascript中使用ERB代碼(僅適用於ajax調用)

對於每個按鈕,我想注入一些html.erb部分

這里的兩個選項是通過ajax調用局部ajax (僅當您具有動態局部ajax時才建議使用)或將局部函數預加載到helper方法中。

我將詳細介紹這兩種方法。

-

阿賈克斯

如果您的部分具有動態內容(IE中填充了變量或類似內容),則需要通過Ajax傳遞請求。

原因是Ruby 只能在服務器上處理<%= ERB %>代碼。 由於Javascript是客戶端,因此您必須使用ajax將異步請求傳遞到服務器,這將為您呈現JS。

Rails UJS引入了remote標記-從此過程中消除了很多麻煩:

#app/view/controller/your_current_view.html.erb
<%= link_to "your post", your_current_view_path, remote: true %>

#app/controllers/controller.rb
class Controller < ApplicationController
   respond_to :js, :html #-> will need the responders gem after Rails 4

   def your_current_view_path
      ....
   end
end

這將允許您使用服務器中的以下js.erb文件:

#app/views/controller/your_current_view.js.erb
$('#my_div').append('<%=j render "shared/my_partial" %>');

然后,這將允許您使用在操作中設置的局部@instance_variables和任何@instance_variables

-

獨立JS

如果您的partial是“靜態”(不需要任何動態數據),則可以使用以下內容:

#app/views/controller/your_current_view.html.erb
<%= content_tag :div, class: "hidden" do %>
   <%= render "shared/my_partial" %>
<% end %>

然后,您可以使用以下JS:

#app/assets/javascripts/application.js
$("a.link").on("click", function(e){
   e.preventDefault();
   hidden = $(".hidden").html();
   $("div").html(hidden);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM