Javascript Rails 4、AJAX、js.erb、缺少模板

Javascript Rails 4、AJAX、js.erb、缺少模板,javascript,ruby-on-rails,ajax,Javascript,Ruby On Rails,Ajax,我正在尝试使用AJAX将模板呈现到索引页面中。有人能帮我理解Rails是如何呈现“next.js.erb”而不是寻找“next.html.erb”的吗 routes.rb get 'index' => 'products#index' get 'next' => 'products#next' index.html.erb <%= @products.first.price %> <%= link_to "Next", action:"next", remote:

我正在尝试使用AJAX将模板呈现到索引页面中。有人能帮我理解Rails是如何呈现“next.js.erb”而不是寻找“next.html.erb”的吗

routes.rb

get 'index' => 'products#index'
get 'next' => 'products#next'
index.html.erb

<%= @products.first.price %>
<%= link_to "Next", action:"next", remote: true %>
<div class="box"></div>

将next.js.erb更改为:

$(".box").html("<%=j render 'nextitem ' %>")
$(.box”).html(“”)

将next.js.erb更改为:

$(".box").html("<%=j render 'nextitem ' %>")
$(.box”).html(“”)

如果您只是在
/next
请求页面,它将查找
html.erb
模板。要呈现
js
模板,需要在请求末尾附加
.js
,如
localhost:3000/next.js
。JSON响应也是如此。对于JSON响应,需要在URL末尾追加
.JSON


或者,如果您使用jQuery从服务器获取响应,则需要传递
dataType:script
以呈现JS格式而不是HTML格式。

如果您只是在
/next
请求页面,它将查找
HTML.erb
模板。要呈现
js
模板,需要在请求末尾附加
.js
,如
localhost:3000/next.js
。JSON响应也是如此。对于JSON响应,需要在URL末尾追加
.JSON


或者,如果您使用jQuery从服务器获取响应,则需要传递
dataType:script
以呈现JS格式而不是HTML格式。

首先,我会向
routes.rb页面添加资源路由,而不是指定每个唯一的路由:

resources :products, only: [:index] do
    member do
        post 'next'
    end
end
然后您的
index.html.erb
页面的链接可以如下所示:

<%= link_to "Next", next_product_path(@product), remote: true %>
最后,在
\u nextitem.html.erb
中,您可以简单地格式化
产品
局部变量,但在呈现之前,您希望它在html中显示,并替换页面上当前的内容,即:

<div><%= product.price %></div>

如果您有任何问题或有任何不太清楚的地方,请告诉我


-Dave

首先,我会将资源路由添加到您的
routes.rb
页面,而不是指定每个唯一的路由:

resources :products, only: [:index] do
    member do
        post 'next'
    end
end
然后您的
index.html.erb
页面的链接可以如下所示:

<%= link_to "Next", next_product_path(@product), remote: true %>
最后,在
\u nextitem.html.erb
中,您可以简单地格式化
产品
局部变量,但在呈现之前,您希望它在html中显示,并替换页面上当前的内容,即:

<div><%= product.price %></div>

如果您有任何问题或有任何不太清楚的地方,请告诉我



-Dave

您如何发送请求
/next
?当您为表单或链接指定“remote:true”时,Rails会自动为您生成ajax请求。您如何发送请求
/next
?当您为表单或链接指定“remote:true”时,Rails会自动为您生成ajax请求如果在链接中为true,则它会自动向服务器发送js请求缺少模板历史价格/next、应用程序/next以及{:locale=>[:en]、:formats=>[:html]、:variants=>[]、:handlers=>[:erb、:builder、:raw、:ruby、:coffee、:jbuilder]}。搜索:“/Users/yumiko/Desktop/portfolio/EarningReport/app/views”我知道如何从服务器获取响应。但是,我想用ajax创建一个相当长的表,这就是我寻找ajax呈现的原因。当您在链接中指定remote true时,它会自动向服务器发送一个js请求缺少模板历史价格/next,application/next,带有{:locale=>[:en],:formats=>[:html],:variants=>[],:handlers=>[:erb,:builder,:raw,:ruby,:coffee,:jbuilder]}. 搜索:“/Users/yumiko/Desktop/portfolio/EarningReport/app/views”我知道如何从服务器获取响应。但是,我想用ajax创建一个相当长的表,这就是我寻找ajax渲染的原因。缺少部分历史价格/\u next,应用程序/\u next和{:locale=>[:en],:formats=>[:js,:html],:variants=>[],:handlers=>[:erb,:builder,:raw,:ruby,:coffee,:jbuilder]}。搜索:“/Users/yumiko/Desktop/portfolio/EarningReport/app/views”@yumiko my bad我以为partial被命名为next,我已经用{:locale=>[:en],:formats=>[:js,:html],:variants=>[:erb,:builder,:raw,:ruby,:coffee,:jbuilder]}更新了我的答案缺少部分历史价格。搜索:“/Users/yumiko/Desktop/portfolio/EarningReport/app/views”@yumiko my bad我以为下一个名字是partial,我已经更新了我的答案谢谢你的详细解释。我从你的回答中学到了很多。谢谢Yumiko!如果我的回答帮助你解决了问题,你能接受吗?如果它还不能帮你解决问题,让我知道我还能帮什么:)谢谢你的详细解释。我从你的回答中学到了很多。谢谢Yumiko!如果我的回答帮助你解决了问题,你能接受吗?如果它还不能帮助您解决问题,请告诉我我还能提供哪些帮助:)