Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.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呈现js文件,但无法执行它_Javascript_Ruby On Rails_Ruby - Fatal编程技术网

Javascript Rails呈现js文件,但无法执行它

Javascript Rails呈现js文件,但无法执行它,javascript,ruby-on-rails,ruby,Javascript,Ruby On Rails,Ruby,我的Ruby 1.9.3p194 2012-04-20修订版35410[x86_64-linux]在Rails 3.2.6应用程序上有一个问题:我需要执行一个js文件,但我只能打印它 视图: 更改top\u ten.js.erb 1 alert('here'); 服务器日志: Started POST "/change_top_ten.js" for 10.0.2.2 at 2015-10-29 10:30:10 +0000 Processing by UsersController#ch

我的Ruby 1.9.3p194 2012-04-20修订版35410[x86_64-linux]在Rails 3.2.6应用程序上有一个问题:我需要执行一个js文件,但我只能打印它

视图:

更改top\u ten.js.erb

  1 alert('here');
服务器日志:

Started POST "/change_top_ten.js" for 10.0.2.2 at 2015-10-29 10:30:10 +0000
Processing by UsersController#change_top_ten as JS
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"+v0oW+p0fy9IxpfbaKTj7g9yZSzffK+SQG52Mx3vjwQ=", "change_top_ten"=>{"status"=>"prof_2"}}
  User Load (56.4ms)  SELECT "users".* FROM "users" WHERE "users"."has_confirmed" = 't' AND "users"."id" = ? LIMIT 1  [["id", 13]]
  Rendered users/change_top_ten.js.erb (0.1ms)
Completed 200 OK in 154.7ms (Views: 34.9ms | ActiveRecord: 66.0ms)
该文件呈现为html页面:带有警告“here”的空白页面;上面印着

编辑: 我正在编辑此问题以答复第一条评论:

application.js

  1 // This is a manifest file that'll be compiled into application.js, which will include all the files
  2 // listed below.
  3 //
  4 // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
  5 // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
  6 //
  7 // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
  8 // the compiled file.
  9 //
 10 // WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
 11 // GO AFTER THE REQUIRES BELOW.
 12 //
 13 //# require angular
 14 //= require jquery
 15 //= require jquery_ujs
 16 //= require jquery.countdown
 17 //= require jquery.remotipart
 18 //# require_tree .

Jquery之所以被导入,是因为我还有其他类似于这里描述的调用,它们工作得很好

您只是在方法中添加了respond\u to js。请尝试以下代码:

def change_top_ten
  @filter = params[:change_top_ten][:status]
  respond_to do |format|
    format.js
  end
end

它将运行您的change_to_ten.js.erb文件。我希望这对您有所帮助。

好的,您希望在更改选择时提交表单,这与您原来的问题有点不同

您希望向application.js文件添加一些javascript,该文件绑定到select控件的onChange事件

i、 例如:

$('select').onChange(function()
  {
    $('form').submit();
  }
);
当任何选择更改时,应提交页面上的任何表单。
您可能希望将绑定的范围限定到特定的select,并将提交到特定的表单。

好的,因此对ajax查询的响应不会作为javascript进行评估。 尝试将以下内容添加到application.js文件中,或者在呈现表单之前将在其中执行

$.ajax({
    url: this.href,
    dataType: "script",
    beforeSend: function(xhr) {xhr.setRequestHeader("Accept", text/javascript");}
});

这是说,将所有ajax调用的数据类型设置为“script”,这意味着响应将被评估为javascript。

我找到了一个临时解决方案。问题在于此代码:

onchange: "this.form.submit();"
<%= f.submit :Save, class: :'btn', type: :submit %>
删除后,添加此代码:

onchange: "this.form.submit();"
<%= f.submit :Save, class: :'btn', type: :submit %>
js文件的执行方式应该是这样的


如何使用onchange方法提交表单并执行我的js代码?

确保表单具有打开javascript标记,例如

<script type="text/javascript">
    enter code here
</script>

您是否错过了rails jquery Java脚本?i、 e./=application.js中是否需要jquery_ujs行?我想您的问题已经在这里得到了回答,请检查服务器日志中的请求内容类型。我确信它将是application/text相同的结果:在2015-10-29 15:58:22+0000由用户处理的10.0.2.2的POST/change\u top\u ten.js开始作为js参数:{utf8=>✓, 真实性\-token=>+v0oW+p0fy9IxpfbaKTj7g9yZSzffK+SQG52Mx3vjwQ=,更改\-top \-ten=>{status=>prof \-1}}}用户加载2.0ms选择用户。*从用户所在的用户中。已确认='t'和用户id=?LIMIT 1[[id,13]]Rendered users/change_top_ten.js.erb 0.4ms在150.5ms视图中完成200 OK:26.0ms | ActiveRecord:71.6msHi Paul D text/javscript后的双引号符号是否正确?我添加了您的代码,其中text/javascirpt用双引号括起来,没有任何更改: