我学习 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.):
最佳答案
我假设一个快乐的案例场景来给你指导。我认为你已经很接近了,但你需要做一些调整
来自片段
<% @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")) %>');
关于javascript - 使用 AJAX 更改部分内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45147410/