2017-07-17 58 views
1

我從某個時候開始學習Ajax,這很棒,所以我並不是真正的專家。所以我需要一些建議。用AJAX改變一個部分

我目前正在建立一個組系統。我有一個選項卡系統來區分你自己的組和其他組。我想要知道的是,腳本是一個ajax,用於將我的部分組從一個標籤發送到另一個標籤。例如,當用戶退出一個組時,它將會消失,我的組將出現在其他選項卡中。

我成功的第一步,但我真的不知道如何可以將表單發送到其他選項卡。 正如你所看到的那樣,我試着發送id,但是沒有包含部分形式。所以這只是渲染我的小組的ID。 任何建議,包括部分(_group2.html.erb)?

我的代碼:

指數(組):

<div class="panel-body"> 
    <div class="tab-content"> 
     <div class="tab-pane fade in active" id="tab1default_group" style="padding:0px;"> 
     <div class="group_area"> 
      <% @my_groups.each do |group| %> 
      <div class="group_box<%=group.id%>"> 
       <%= render 'group', group: group %> 
      </div> 
      <% end %> 
     </div> 
     </div> 
     <div class="tab-pane fade in" id="tab2default_group" style="padding:0px;"> 
     <div class="group_area2"> 
      <% @groups_out.each do |group| %> 
      <div class="group_box2<%=group.id%>"> 
       <%= render 'group2', group: group %> 
      </div> 
      <% end %> 
     </div> 
     </div> 
    </div> 
    </div> 

rem_req.js.erb(組):

$(".group_box<%[email protected]%>").fadeOut(); 
$(".group_area2").append('<%= render partial: @group2 %>'); 

Groups_controller:

def rem_req 
    if @group.groupes_admin.count == 1 && @group.groupes_admin.where(user_id: current_user).any? 
     flash[:error] = "Vous devez définir un nouvel Admin ou supprimer ce groupe" 
    else 
     RemReqGroupJob.perform_later(current_user, @group) 
     flash[:error] = "Vous ne faites plus parti de #{@group.name}" 
     @group2 = Group.where(id: @group.id).last 
    end 
    respond_to do |format| 
     format.html { redirect_back } 
     format.js 
    end 
    end 

,當我嘗試運行此,我有這樣的錯誤:

ActionView::Template::Error ('nil' is not an ActiveModel-compatible object. It must implement :to_partial_path.): 

回答

0

我認爲快樂的情況下,給你方向。我覺得你接近,但你需要做一些調整

從片段

<% @groups_out.each do |group| %> 
    <div class="group_box2<%=group.id%>"> 
    <%= render 'group2', group: group %> 
    </div> 
<% end %> 

第一招<div class="group_box2<%=group.id%>">..</div>group2部分。

然後用$(".group_area2").append('<%= j(render(partial: "group2")) %>');代替$(".group_area2").append('<%= render partial: @group2 %>');