Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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
Rails 6 Ajax请求不起作用,语法错误:预期表达式,get'<';汽车:1阿贾克斯在铁轨上坏了吗?_Ajax_Ruby On Rails 6 - Fatal编程技术网

Rails 6 Ajax请求不起作用,语法错误:预期表达式,get'<';汽车:1阿贾克斯在铁轨上坏了吗?

Rails 6 Ajax请求不起作用,语法错误:预期表达式,get'<';汽车:1阿贾克斯在铁轨上坏了吗?,ajax,ruby-on-rails-6,Ajax,Ruby On Rails 6,我在开发的一个应用程序中遇到了这个问题,我不知道为什么会出现错误,所以我创建了一个普通的测试应用程序,并使用 rails g scaffold cars name 然后我在cars index.html.erb文件中添加了一个简单的div <div id="cars"> <p> Hello </p> </div> 到目前为止还不错。运行应用程序并使用cars链接会产生预期的错误,Rails日志告诉我它找不到需要渲染的视图。浏览器中没有控制台

我在开发的一个应用程序中遇到了这个问题,我不知道为什么会出现错误,所以我创建了一个普通的测试应用程序,并使用

rails g scaffold cars name
然后我在cars index.html.erb文件中添加了一个简单的div

<div id="cars">
  <p> Hello </p>
</div>
到目前为止还不错。运行应用程序并使用cars链接会产生预期的错误,Rails日志告诉我它找不到需要渲染的视图。浏览器中没有控制台错误,因此一切都已连接并正常工作

因此,我用下面的代码创建了一个cars.js.erb模板,应该用“Boo”替换“Hello”,就像这样

car=document.getElementById(“cars”)
car.innerHTML=“”

这在我的浏览器(Firefox)中给了我一个控制台错误,
SyntaxError:expected expression,get'您看到的错误是由于将SJR模板命名为
cars.js.erb
而不是
index.js.erb
。默认情况下,
index
操作呈现名为
index
的模板。当Rails找不到
index.js.erb
时,它会呈现
index.html.erb
,这会在将其计算为JavaScript时导致语法错误

要解决此问题,您可以将
cars.js.erb
重命名为
index.js.erb
,也可以将
format.js
调用更改为
format.js{render“cars”}

另外,为了避免将来的麻烦,我应该指出,
render(“Boo”)
不呈现单词“Boo”,而是尝试呈现名为“\u Boo”的部分模板

<p id="notice"><%= notice %></p>

<h1>Cars</h1>
<div id="cars">
  <p> Hello </p>
</div>

<table>
  <thead>
    <tr>
      <th>Name</th>
      <th colspan="3"></th>
    </tr>
  </thead>

  <tbody>
    <% @cars.each do |car| %>
      <tr>
        <td><%= car.name %></td>
        <td><%= link_to 'Show', car %></td>
        <td><%= link_to 'Edit', edit_car_path(car) %></td>
        <td><%= link_to 'Destroy', car, method: :delete, data: { confirm: 'Are you sure?' } %></td>
      </tr>
    <% end %>
  </tbody>
</table>

<br>

<%= link_to 'New Car', new_car_path %>
<!DOCTYPE html>
<html>
  <head>
    <title>Ajaxtest</title>
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
  </head>

  <body>
    <%= link_to "Cars", cars_path, remote: true %>
    <%= yield %>
  </body>
</html>
  def index
    @cars = Car.all
    respond_to do |format|
      format.html
      format.js
    end

  end
car = document.getElementById("cars")
car.innerHTML = "<%= j render("Boo") %>"