我在我的rails应用程序上创建了一个简单的异步jquery函数,这样我就可以在"display"div上打印响应。但是当我向我的 rails url 发出 GET 请求时,它会响应整个 html:"body"、"head"和"include",就好像它是浏览器上的新页面一样,因此结果来源如下:
在我按下按钮之前:
<html>
<head>
<title>Myapp1</title>
</head>
<body>
<button onclick="callPage()">Call</button>
<div id="display"></div>
</body>
<html>
在我按下按钮并且"显示"div 充满我的响应后:
<html>
<head>
<title>Myapp1</title>
</head>
<body>
<button onclick="callPage()">Call</button>
<div id="display">
*<html>
<head>
<title>Myapp1</title>
</head>
<body>
-----Content of page user/1 which is the only thing I want to get.------
</body>
<html>*
</div>
</body>
我在routes.rb(RUBY ON RAILS)上给用户的路线工作正常
resources :users
#get 'welcome/index'
match ':controller(/:action(/:id))', :via => :get
我的Jquery GET调用页面(工作正常)
<script>
function callPage()
{
url="user/1";
div="display";
$.ajax({
type: "GET",
dataType: "text",
url: url,
success: function(msg){
if(parseInt(msg)!=0)
{
$("#"+div).html(msg);
}
}
}).setRequestHeader('X-CSRF-Token', AUTH_TOKEN);
}
</script>
问题是我如何防止 RAILS 打印出所有 html 标记(body、heads,...),并让它只打印我想要的控制器(在本例中为用户)的视图。 ¿它是某处的配置还是我以某种方式挥手修剪它?
提前感谢一百万的时间。
要仅显示视图,您必须更改控制器操作以在末尾具有渲染布局:false。这将阻止布局呈现,仅保留视图文件中的内容。
例如:
class YourController < ApplicationController
def show
# bla bla
render 'your_show_view_name', layout: false
end
end
如果您希望所有控制器操作都具有此行为,则可以将其放在顶部
class YourController < ApplicationController
layout false
def show
# bla bla
end
end