Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Rails中动态更新html并使用帮助程序?_Javascript_Jquery_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Javascript 如何在Rails中动态更新html并使用帮助程序?

Javascript 如何在Rails中动态更新html并使用帮助程序?,javascript,jquery,ruby-on-rails,ruby-on-rails-4,Javascript,Jquery,Ruby On Rails,Ruby On Rails 4,我想在Rails中使用jQuery更新div的html。我想请帮手 例如,假设我试图在div中放置一个图像。下面是我在js文件中的操作: // Update the html content of #div // I am using a helper, img_tag $("#div").html("<%= img_tag('some_image.png') %><br> + 'some message'" //更新#div的html内容 //我正在使用一个助手,i

我想在Rails中使用jQuery更新div的html。我想请帮手

例如,假设我试图在div中放置一个图像。下面是我在js文件中的操作:

// Update the html content of #div
// I am using a helper, img_tag

$("#div").html("<%= img_tag('some_image.png') %><br> + 'some message'"
//更新#div的html内容
//我正在使用一个助手,img_标签
$(“#div”).html(“
+”某些消息“
但是helper不创建img标记,而是作为字符串显示在div中

i.e.
// Content of the div as a result:

<%= img_tag('some_image.png') %><br> some message
即。
//因此,div的内容:

一些信息
当我手动键入html标记时,它可以工作

i.e.
$("#div").html("<img src="assets/images/some_image.png" alt="img"><br>
 + 'some message'"
即。
$(“#div”).html(“
+“一些信息”

但我想知道在这种情况下如何使用帮助程序,因为我也在尝试使用其他帮助程序,如link_to。

您的JavaScript文件必须具有.erb扩展名才能使用嵌入式ruby。

需要考虑的几个问题:


JS

首先,你需要考虑你试图使用的JS。

根据定义,标准不能使用rails帮助程序。原因是JS是一种“前端”/“客户端”语言,只有在加载页面后才能工作。事实上,JS往往只在以下情况下工作:

JavaScript(JS;英语发音:/'jəvˌskrɪpt/)是动态的 计算机程序设计语言。它是最常用的计算机程序设计语言 web浏览器,其实现允许客户端脚本 与用户交互、控制浏览器、沟通 异步,并更改显示的文档内容。 它也被用于服务器端网络编程(带 js),游戏开发以及桌面和移动设备的创建 应用程序

底线是,Javascript只会加载到应用程序的客户端部分。由于Ruby/Rails是服务器端的,对PHP之类的东西来说模棱两可,因此JS将无法在传统流程中处理Rails助手

解决这个问题的唯一方法是以某种方式将JS与Rails的加载机制结合起来。这可以通过(从服务器上拉)来完成,也可以使用Rails呈现JS(不确定如何)


修复

我相信您可以使用,这意味着,像
erb
,您可以在javascript文件中调用Rails助手:

这同样适用于JavaScript文件- app/assets/javascripts/projects.js.coffee.erb作为erb处理, 然后是CoffeeScript,并充当JavaScript

请记住,这些预处理器的顺序很重要 例如,如果调用JavaScript文件 app/assets/javascripts/projects.js.erb.coffee那么 先用CoffeeScript解释器处理,这不会 了解雇员再培训局,你就会遇到问题

这意味着如果你想做你正在做的事情,你需要附加预处理器,以确保它可以调用Rails助手:

#app/assets/javascripts/application.js.erb
var loaded = function(){
   $("#div").html("<%=j image_tag('some_image.png') %><br> + 'some message'"
};
$(document).on("page:load ready", loaded);
#app/assets/javascripts/application.js.erb
var loaded=function(){
$(“#div”).html(“
+”某些消息“ }; $(文档)。在(“第页:加载就绪”,已加载);
你确定你的app/assets/images文件夹中有你想要的png图像吗?@JoelL-Hmmm..是的,我在app/assets/images文件夹中有它。我不仅不能使用img_标记,而且不能使用link_-to等。你对link_-to标记有什么问题吗?@JoelL助手只是以文本的形式显示,而不是像他们那样生成html标记应该。@JoelL谢谢,但是助手仍然显示为文本。