2017-07-17 12 views
1

私は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 %> 

最初の移動部分group2でも<div class="group_box2<%=group.id%>">..</div>

を微調整するために必要があると思います。

$(".group_area2").append('<%= render partial: @group2 %>'); $(".group_area2").append('<%= j(render(partial: "group2")) %>');

に置き換えます。
関連する問題