Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.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中Ajax响应后的JS操作_Javascript_Ruby On Rails - Fatal编程技术网

Javascript Rails中Ajax响应后的JS操作

Javascript Rails中Ajax响应后的JS操作,javascript,ruby-on-rails,Javascript,Ruby On Rails,ajax请求有以下select标记: = form_for owner, url: change_status_admin_owner_path(owner), remote: true do |f| .row = f.select(:status_id, options_from_collection_for_select(Status.all, :id, :description, owner[:status_id]), {}, { data: { remote: tr

ajax请求有以下select标记:

= form_for owner, url: change_status_admin_owner_path(owner), remote: true do |f|
  .row
    = f.select(:status_id, options_from_collection_for_select(Status.all, :id, :description, 
    owner[:status_id]), {}, { data: { remote: true, url: change_status_admin_owner_path(owner), method: :patch } })
控制器中的操作:

def change_status
    Owner.find(params[:id]).update!(status: Status.find(params[:owner])
end
并更改_status.js.erb:

$("html").remove();
例如,它是JS,不是真正的任务,但它不起作用-我得到的不是我的JS代码:

  <div class='content'>
    <div class='container'>
      $("html").remove();
    </div>
  </div>

$(“html”).remove();

例如,Rails将我的JS代码呈现为文本!我的代码出了什么问题?谢谢

如果希望操作将响应设置为JS,请尝试添加如下块:

def change_status
    Owner.find(params[:id]).update!(status: Status.find(params[:owner])
    respond_to do |format|
      format.js
    end
end

这将在您的视图文件夹中查找
change\u status.js.erb
文件。

关于我的评论和
manu29.d
的答案,您最好使用以下块:

--

但是,这并不能解释为什么您的响应被呈现为HTML(而不是JS)

我猜想,由于您的应用程序没有将响应作为
文本/javascript
进行处理,Rails将在您的文件夹中查找任何名为
change\u status
的视图格式(即可以是
.html.erb
.js.erb


正如发现的一个名为
.js.erb
,我猜它是作为静态HTML处理的(因为
erb
只是一个预处理器)。要解决这个问题,
respond_To
块基本上会设置mime类型,允许浏览器消化
JS

why$('html')。remove();你想做什么?这是示例代码!我用它来检查JS是否正常,你能给出一个简单的警告吗();检查我做了-还是一样..你试过添加块吗?
def change_status
  ...
  respond_to do |format|
     format.js #-> looks for change_status.js.erb
  end
end