Rails 4 - 部分渲染后 运行 代码的事件
Rails 4 - event to run code after a partial is rendered
我有一个 js.erb 文件,它通过控制器操作用 ajax 调用。 js.erb 文件呈现部分。部分内部是根据模型生成的数据属性。我需要一种方法来 运行 仅在呈现部分后才编写代码,因为代码使用数据属性中的信息。
items_controller.rb
def remove_tag
@item = Item.find_by_id(params[:id])
//code to remove tag from item
@item.save
respond_to do |format|
format.js
@item.reload
end
end
remove_tag.js.erb
$("#taglist").html('<%= escape_javascript(render partial: "items/tag_list", locals: {item: @item}) %>');
//the code below needs to be run after the above partial is rendered
$('#add-tag').rules("add", {
tagUniqueness: $('#taglist').data('tag-list').split(', ')
});
_tag_list.html.erb
<div id="taglist" data-tag-list="<%= item.all_tags_list %>">
//more html
</div>
现在的情况是,.rules 方法使用 html 在部分更新之前存在的数据。
要将散列或数组从 Ruby 转换为 javascript,您可以使用 .to_json
,因为 JSON 基本上是 javascript 的子集。
$('#add-tag').rules("add", {
tagUniqueness: <%= js @badge.all_tags_list.to_json %>
});
这种类型的功能适合 callbacks
在 javascript/jquery...
A callback function is executed after the current effect is 100% finished.
我们使用回调在 ajax 加载后执行函数(必须保持异步)。如果你能让它们发挥作用,它们会非常有效。
有个great reference here:
$("#taglist").html('<%= escape_javascript(render partial: "items/tag_list", locals: {item: @item}) %>').promise().done(function(){
$('#add-tag').rules("add", {
tagUniqueness: <%= js @badge.all_tags_list.to_json %>
});
});
我有一个 js.erb 文件,它通过控制器操作用 ajax 调用。 js.erb 文件呈现部分。部分内部是根据模型生成的数据属性。我需要一种方法来 运行 仅在呈现部分后才编写代码,因为代码使用数据属性中的信息。
items_controller.rb
def remove_tag
@item = Item.find_by_id(params[:id])
//code to remove tag from item
@item.save
respond_to do |format|
format.js
@item.reload
end
end
remove_tag.js.erb
$("#taglist").html('<%= escape_javascript(render partial: "items/tag_list", locals: {item: @item}) %>');
//the code below needs to be run after the above partial is rendered
$('#add-tag').rules("add", {
tagUniqueness: $('#taglist').data('tag-list').split(', ')
});
_tag_list.html.erb
<div id="taglist" data-tag-list="<%= item.all_tags_list %>">
//more html
</div>
现在的情况是,.rules 方法使用 html 在部分更新之前存在的数据。
要将散列或数组从 Ruby 转换为 javascript,您可以使用 .to_json
,因为 JSON 基本上是 javascript 的子集。
$('#add-tag').rules("add", {
tagUniqueness: <%= js @badge.all_tags_list.to_json %>
});
这种类型的功能适合 callbacks
在 javascript/jquery...
A callback function is executed after the current effect is 100% finished.
我们使用回调在 ajax 加载后执行函数(必须保持异步)。如果你能让它们发挥作用,它们会非常有效。
有个great reference here:
$("#taglist").html('<%= escape_javascript(render partial: "items/tag_list", locals: {item: @item}) %>').promise().done(function(){
$('#add-tag').rules("add", {
tagUniqueness: <%= js @badge.all_tags_list.to_json %>
});
});