使用AJAX更改部分

时间:2017-07-17 14:53:21

标签: javascript jquery ruby-on-rails 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<%=@group.id%>").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.):

1 个答案:

答案 0 :(得分: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('<%= render partial: @group2 %>'); 替换为$(".group_area2").append('<%= j(render(partial: "group2")) %>');