Ajax加载静态Rails部分
Ajax Load Static Rails Partial
在我的rails应用程序中,我有一个html模板位于public/templates/_hero-1.html.erb
在我的application.js.erb文件中,我试图将该模板加载到我动态创建的div
中,在我渲染整个div
之前。
// Append component to text editor when clicked
$('.js-TemplateThumbnail').click(function() {
// Define new template container
var newTemplateContainer = $('<div class="position-relative hideChild js-TemplateContainer">');
// Insert selected template into new template container
newTemplateContainer.load("<%= 'public/templates/hero-1' %>");
// Build new template
$('.js-Canvas .js-TemplateContainer').last().after(newTemplateContainer);
});
但是我得到一个控制台错误GET http://localhost:3000/public/templates/hero-1 404 (Not Found)
快速回答/相关SO回答:在js中渲染部分。erb文件
更长的回答:有几种方法可以做到这一点。你可以试试:
newTemplateContainer.load("<%= 'render partial: public/templates/hero-1' %>");
肯定不行。这让我觉得很粗糙,而且还会给您留下高度耦合的代码。如果模板的名字改变了,你必须在n个地方更新它。
我会解耦JS并在config/routes.rb
中创建一个内部端点;如:
get templates/:id
,
class TemplatesController < ApplicationController
def show
@template = Template.find(params[:id])
end
end
然后在JS的click处理程序中,你可以:
$.get('/templates/hero-1', function(data) {
// do stuff with returned data
$('.js-Canvas').html(data)
});
非常简单,但更重要的是试图概述一种不同的方法。这似乎也是把手可以帮助的事情。
相关文章:
- Rails部分未呈现
- Rails 4、Turbolink在渲染一个部分后执行javascript
- 如何使用 javascript 而不是使用控制器中的方法在 rails 中呈现部分按钮单击
- Rails Ajax 刷新部分,同时持久化参数
- Rails:尝试在按钮单击时渲染部分
- Rails使用ajax调用更新多态对象的表部分
- 将Ajax部分视图模板放在Assets/javascripts目录中,而不是视图目录、Rails中
- 为什么不是't在我的rails部分中工作的DataTables
- 基于媒体查询的Rails部分加载
- 在jQuery单击函数上渲染部分Rails
- Rails - 如何通过 AJAX 在渲染的部分中调用 jQuery 事件
- 在 Rails 中使用 AJAX link_to渲染部分
- Ruby on Rails - 执行 ajax 以在 JQuery 单击时呈现部分
- Rails 3 在 JS 文件中渲染部分
- Rails 格式.html在 ajax 调用上呈现部分返回奇怪的结果
- Rails 4 - 呈现部分后运行代码的事件
- Rails 4:将局部变量从包含form_for帮助程序的部分传递给 js.erb 文件
- 重新加载Rails部分ajax回调
- Rails 4-manifest JS在AJAX中不可用,在JS中呈现部分
- Rails js在清除之前的模板后呈现部分