Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.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中的错误_Javascript_Jquery_Ruby On Rails_Ajax_Ruby On Rails 3 - Fatal编程技术网

Javascript Rails-Ajax中的错误

Javascript Rails-Ajax中的错误,javascript,jquery,ruby-on-rails,ajax,ruby-on-rails-3,Javascript,Jquery,Ruby On Rails,Ajax,Ruby On Rails 3,我以前是这样做的,但是当我打开新标签时,我得到了ActionController::UnknownFormat,下面的链接是cat.id),:remote=>true%>。这个怎么了?谢谢 另外,当我点击链接时,它没有任何响应 这是你的电话号码 控制器: def from_category @selected = Item.find(params[:cat_id]) respond_to do |format| format.js end end 观点 index.html

我以前是这样做的,但是当我打开新标签时,我得到了ActionController::UnknownFormat,下面的链接是cat.id),:remote=>true%>。这个怎么了?谢谢

另外,当我点击链接时,它没有任何响应

这是你的电话号码

控制器:

def from_category
  @selected = Item.find(params[:cat_id])
  respond_to do |format|
    format.js
  end
end
观点

index.html.erb

cat.id),:remote=>true%>

_items_list.html.erb

<% items.each do |item| %>
  <div class="item_box">
    ...
  </div>
<% end %>

...
项目_grid.html.erb

<div>
  <div id="items_grid" >
    <%= render partial: 'items_list', locals: {items: items}  %>
  </div>
</div>

来自_category.js.erb

$("#items_grid").html("<%= escape_javascript(render partial: 'items_list', locals: { items: @selected } ) %>");
$(“#项#网格”).html(“”);

很可能是您发送了一个
json
请求,而
respond\u to
块没有包含该请求

您可以通过执行以下操作看到这一点:

respond_to do |format|
  format.json
  format.js
end
或者,您也可以尝试:

<%= link_to 'Link Name', fetch_items_path(:cat_id => cat.id), remote: true, format: :js %>
cat.id),远程:true,格式::js%>
如果这两种方法中的任何一种都起作用,那么本质上意味着您正在发送一个JSON请求,而该请求将不会被处理。如果是这样的话,上面的补丁应该可以解决这个问题

--

第二,当你提到

“我打开新选项卡”

您意识到Ajax并不意味着同步工作,对吗?这意味着它并不意味着加载整个页面的“顺序”。它必须沿着页面本身加载。要做到这一点,您需要从嵌入它的页面调用它

--

最后,您应该注意浏览器中的
JS控制台

对于Chrome和Firefox,您可以通过右键单击并选择“Inspect Element”来访问它。这将打开“开发人员控制台”,从中您可以看到javascript发生了什么:

现在,这对你的案子来说很重要。当你点击链接时,你提到“什么也没发生”。这方面有几个潜力:

  • 您还没有启用(这是Rails用来让
    remote
    之类的工具工作的)
  • 服务器上出现错误,无法启动脚本

无论哪种方式,您都可以通过点击开发者控制台并查看
网络
选项卡来查看发生了什么。请注意,当您点击链接时-它是否创建了新请求?如果没有,您必须将
jquery ujs
gem添加到Application.js文件中,否则服务器上的脚本会出现问题。

经过分析,我得到了错误的代码部分。它与路由有关

相反:

get”/fetch_items=>“items”#from_category”,如:“fetch_items”

我改为:

get“fetch\u items”


现在它可以正常工作了。

route.rb呢?我忘了包括我的路线,这里是:get“/fetch_items”=>“items”#from_category',as:'fetch_items',我想我的控制器有点“format.js”。我试图添加format.html,但它正在为它寻找一个html文件,我想要的行为是触发js.erb。我查看您的部分文件_items.list.html.erb而不是_items_list.html.erb?服务器和控制台浏览器中控制台中的错误如何?抱歉_items.list.html.erb是一个打字错误。我修改了它,请参见上文。我根据您的im查看年龄。您尝试在url中访问您的页面,但它是ajax,因此您无法通过url访问。如果您想尝试,您必须添加format.html。要运行ajax,您必须单击链接。记住,如果您为ajax添加路由,您必须重新启动服务器。您好@Rich Peck,我已经尝试了这两种方法,但仍然有以下内容:ActionController::UnknownFormat(ActionController::UnkwowFormat):app/controllers/items\u controller.rb:13:in
from\u category
你能发布你的Rails控制台和JS控制台日志来请求吗?嗨@Rich Peck,我添加了日志,以及我打开指向新选项卡的链接时发生了什么[不要在新选项卡中打开你的链接,因为它发送的请求与ajax不同。你需要打开
网络
选项卡,在那里找到你被破坏的请求(通常它会突出显示为红色,这一个),单击它并选择右侧的
预览
选项卡,你应该能够看到实际的错误。