我有一个用于 Rails 控制器的 AJAX 创建操作,它将选择表单并通过仅渲染表单的一部分来重新创建它。这样,验证失败时就会显示错误消息。
但是,我的文本字段之一是使用 jQuery TokenInput 插件,当 ajax 调用重绘表单时,jQuery TokenInput 插件不再加载到表单上。
有什么方法可以触发从 AJAX 控制器操作 javascript 文件重新运行相应的 assets/javascripts/.js.coffee 文件?
提前致谢...
我有一个用于 Rails 控制器的 AJAX 创建操作,它将选择表单并通过仅渲染表单的一部分来重新创建它。这样,验证失败时就会显示错误消息。
但是,我的文本字段之一是使用 jQuery TokenInput 插件,当 ajax 调用重绘表单时,jQuery TokenInput 插件不再加载到表单上。
有什么方法可以触发从 AJAX 控制器操作 javascript 文件重新运行相应的 assets/javascripts/.js.coffee 文件?
提前致谢...
重新绘制表单后,您只需要重新运行您的 Tokeninput 脚本。最好的方法是将您的 Tokeninput 命令放入一个函数中(这样您就不会重复自己),然后在表单渲染后调用该函数。例如,假设您想要一个 Dog 模型,其中包含您想要标记化的多个项圈:
dog.js.coffee:
tokenizeDogCollars = ->
$("#dog_collar_tokens").tokenInput "/dogs.json"
tokenizeDogCollars
创建.js.erb:
<% if @dog.errors.any? -%>
...
$('#dog-form-container').empty();
$('#dog-form-container').append('<%= j render("form") %>');
tokenizeDogCollars();
...
<% else %>
... whatever you want to do on a successful save ...
<% end %>