Rails 5 交叉模型 ajax 表单未更新索引
Rails 5 cross model ajax form not updating index
Class Actual
正在管理 class Friendgroup
中对象的创建和删除。表单页面
<ul id=friendgroups> <%= render @friendgroups %> </ul>
<%= form_with model: Friendgroup.new, data: {'js-friendgroup-form' => true} do |form| %>
Name <%= form.text_field :name %>
<%= form.submit %>
<% end %>
在页面加载时正确调用朋友组集合,朋友组控制器确实创建记录:
def create
params[:friendgroup][:user_id] = current_user.id
@friendgroup = Friendgroup.new(friendgroup_params)
authorize @friendgroup
if @friendgroup.save
render partial: 'friendgroup', locals: {friendgroup: @friendgroup}
end
end
页面加载时,加载现有对象:
<li data-js-friendgroup-id=<%= friendgroup.id %>>
<%= friendgroup.name %> <%= link_to "Delete", friendgroup, remote: true, method: :delete, data: { confirm: "Are you sure you want to delete '#{friendgroup.name}'?" } %>
然而,AJAX 操作并没有渗透回索引,这让我得出结论,javascript 函数没有绑定到正确的 classes/items:
//= require jquery3
//= require jquery-ui
//= require rails-ujs
$(document).ready(function() {
$('[data-js-friendgroup-form]').on("ajax:success", function(event, data, status, xhr){
var friendgroup = $(xhr.responseText).hide();
$('#friendgroups').append(friendgroups);
friendgroup.fadeIn(1000);
// $('#friendgroups').append(xhr.responseText);
});
$('[data-js-friendgroup-id]').on("ajax:success", function(event, data, status, xhr){
var friendgroup_id = xhr.responseJSON.id;
$('[data-js-friendgroup-id=' + friendgroup_id + ']').hide();
});
});
另一个可能的罪魁祸首是控制台错误
TypeError: url.indexOf is not a function
被 jQuery3 激活,但这与上面的代码关系不大。
这些跨模型动作如何运行正确?
眼睛不好的问题
$('#friendgroups').append(friendgroup);
而不是
$('#friendgroups').append(friendgroups);
Class Actual
正在管理 class Friendgroup
中对象的创建和删除。表单页面
<ul id=friendgroups> <%= render @friendgroups %> </ul>
<%= form_with model: Friendgroup.new, data: {'js-friendgroup-form' => true} do |form| %>
Name <%= form.text_field :name %>
<%= form.submit %>
<% end %>
在页面加载时正确调用朋友组集合,朋友组控制器确实创建记录:
def create
params[:friendgroup][:user_id] = current_user.id
@friendgroup = Friendgroup.new(friendgroup_params)
authorize @friendgroup
if @friendgroup.save
render partial: 'friendgroup', locals: {friendgroup: @friendgroup}
end
end
页面加载时,加载现有对象:
<li data-js-friendgroup-id=<%= friendgroup.id %>>
<%= friendgroup.name %> <%= link_to "Delete", friendgroup, remote: true, method: :delete, data: { confirm: "Are you sure you want to delete '#{friendgroup.name}'?" } %>
然而,AJAX 操作并没有渗透回索引,这让我得出结论,javascript 函数没有绑定到正确的 classes/items:
//= require jquery3
//= require jquery-ui
//= require rails-ujs
$(document).ready(function() {
$('[data-js-friendgroup-form]').on("ajax:success", function(event, data, status, xhr){
var friendgroup = $(xhr.responseText).hide();
$('#friendgroups').append(friendgroups);
friendgroup.fadeIn(1000);
// $('#friendgroups').append(xhr.responseText);
});
$('[data-js-friendgroup-id]').on("ajax:success", function(event, data, status, xhr){
var friendgroup_id = xhr.responseJSON.id;
$('[data-js-friendgroup-id=' + friendgroup_id + ']').hide();
});
});
另一个可能的罪魁祸首是控制台错误
TypeError: url.indexOf is not a function
被 jQuery3 激活,但这与上面的代码关系不大。
这些跨模型动作如何运行正确?
眼睛不好的问题
$('#friendgroups').append(friendgroup);
而不是
$('#friendgroups').append(friendgroups);