如何在 .js.erb 文件中执行模态的 js 渲染
How do I execute a js render of a modal in a .js.erb file?
我有一个看起来像这样的main.js.erb
:
$(document).on("page:change", function(){
MainJS.init();
$("#add-video-step-1").html("<%= escape_javascript(render 'videos/upload_video') %>");
$('#myModalLabel').modal(show);
Ladda.bind('#video-submit');
console.log("Upload.js.erb has been executed");
});
基本上我想发生的是每当按下带有 id #video-submit
的按钮时,我希望它执行部分videos/upload_video
中的模态。
我认为只需做一个常规render 'videos/upload_video'
就足够了,但是当我尝试这样做时,我收到此错误:
NoMethodError at /
undefined method `render' for #<#<Class:0x007f916fcf1310>:0x007f91721a9c20>
(in /app/assets/javascripts/main.js.erb)
在这一行:
$("#myVCModal").html("<%= escape_javascript(render 'videos/upload_video') %>");
思潮?
编辑 1
这是部分的代码,根据uDAY的请求 - 即 video/_upload_video.html.erb
:
<div class="bootstrap-styles">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel">Upload your Video</h3>
<p><i>Step 2 of 2 - TEST</i></p>
</div>
<div class="modal-body">
<div class="form">
<%= form_tag @upload_info[:url], :multipart => true do %>
<div>Step 2 of 2</div>
<%= hidden_field_tag :token, @upload_info[:token] %>
<%= file_field_tag :file, title: 'Choose video to upload' %>
<p class="uploader">
<button class="btn btn-success ladda-button" data-color="green" data-style="expand-left"><span class="ladda-label">Upload Video</span><span class="ladda-spinner"></span></button>
</p>
<% end %>
</div>
</div>
<div class="modal-footer">
</div>
</div>
您收到错误render
因为这是一种views (ActionView)
方法,并且您正在不可用的资产中尝试它。因此,要使其正常工作,我们应该做的是初始化ActionView
为此,您的main.js.erb
应该是这样的:
$(document).on("page:change", function(){
MainJS.init();
<% action_view = ActionView::Base.new(Rails.configuration.paths["app/views"].first) %>
$("#add-video-step-1").html("<%= action_view.escape_javascript(action_view.render 'videos/upload_video') %>");
$('#myModalLabel').modal(show);
Ladda.bind('#video-submit');
console.log("Upload.js.erb has been executed");
});
我刚刚尝试过,它对我有用,试一试,知道它是否适合你:)
对于 ajax 请求和渲染部分内容,您可以简单地向 a 发送 ajax 请求controller
action
将以下代码放入相应的视图文件 ( action.js.erb
):
$("#add-video-step-1").html("<%= escape_javascript(render 'videos/upload_video') %>");
$('#myModalLabel').modal(show);
相关文章:
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- jqueryajax调用是复制url,当在模态视图之后在外部js文件中进行调用时
- React.js中显示了模态时如何执行某些操作
- Angular Js 尝试从主按钮回调动态更改模态文本并且不起作用
- Angular js - 异步调用 $scope.users 后不更新模态值
- 理解模态.js中复杂的 $.extend
- setScrollbar() 方法实际上在模态.js中做什么
- 如何在模态助推器中显示计算结果(JS)
- 在模态中使用 e.target 的复杂 if 条件.js
- 创建一个模态指令,并将click事件绑定到angular js中
- 当使用angular.js和ui.bootstrap时,从模态内部的按钮单击事件未触发
- 显示控制器angular js的模态
- 如何在使用模态的同时使用AJAX在js和php之间进行通信
- $scope在模态角 js 中未定义
- KNOCKOUT.js - 模态的延迟数据绑定
- JS模态不适用于每一行
- 香草JS模态与良好的iFrame支持
- 向CSS/JS模态添加多个图像时出现问题
- 引导JS模态
- Angular js模态更新数据问题