Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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中嵌入ruby的语法错误_Javascript_Ruby On Rails_Ruby - Fatal编程技术网

javascript中嵌入ruby的语法错误

javascript中嵌入ruby的语法错误,javascript,ruby-on-rails,ruby,Javascript,Ruby On Rails,Ruby,我正试图按照这个例子在application.js中嵌入Ruby代码 然而,当我说: var formData = <%= @s3_direct_post.fields.to_json.html_safe %>; var formData=; 我得到了“SyntaxError:expected expression,得到了”,我相信您遇到的问题是Rails没有尝试评估application.js,只是“按原样”交付文件。您参考的教程没有明确说明这一点,但您必须将任何Ruby脚本

我正试图按照这个例子在application.js中嵌入Ruby代码

然而,当我说:

var formData = <%= @s3_direct_post.fields.to_json.html_safe %>;
var formData=;

我得到了“SyntaxError:expected expression,得到了”,我相信您遇到的问题是Rails没有尝试评估application.js,只是“按原样”交付文件。您参考的教程没有明确说明这一点,但您必须将任何Ruby脚本放到ERB模板中。 例如,尝试将您的代码添加到app/views/users/_form.html.erb或新的.html.erb模板,而不是application.js。Rails将解释Ruby代码并呈现替换的值。

您不能简单地在javascript文件中使用Ruby代码或表达式,您需要先预处理Ruby代码,然后将该值传递给javascript引擎进行处理。只需确保您的文件具有js.erb扩展名,这样您的文件将首先针对ruby表达式进行处理,然后针对js进行处理。


有关更多详细信息,您可以参考

,如果您想在视图中使用javascript代码,您可以在页面末尾添加以下代码。您应该能够运行javascript代码

<% content_for :javascript do %>
    $(). //  your ruby code e.g. var formData = #{@s3_direct_post.fields.to_json.html_safe};
<% end %>

$()。//您的ruby代码,例如var formData=#{@s3_direct_post.fields.to_json.html_safe};

或者假设您的控制器中有show action和视图中的show表单,那么您可以创建
show.js.html
文件并在其中编写java脚本代码,因为这不是JavaScript。生成JavaScript的是ERb,所以您需要对其进行预处理。如果按原样提供,则无法对其进行解释。l在哪里ine(哪个文件,哪个目录),你是如何呈现它的?
var formData={@s3_direct_post.fields.to_json.html_safe}
它在app/assets/javascripts/application.js中。你怎么呈现它是什么意思?Sontya在你编写代码的地方给了我“SyntaxError:非法字符”?
<% content_for :javascript do %>
    $(). //  your ruby code e.g. var formData = #{@s3_direct_post.fields.to_json.html_safe};
<% end %>