只是尝试一个简单的rails应用程序,主要是使用JSON,重型客户端应用程序的API后端.所以我想做的只是渲染布局,并让javascript代码处理url,并使ajax请求获取json数据.以下似乎有效:
respond_to do |format|
format.html { render :nothing => true, :layout => true }
end
Run Code Online (Sandbox Code Playgroud)
但是,由于没有任何东西可以做任何事情,感觉有点不对劲.有没有更恰当的方式来渲染布局?请注意,我的布局没有收益.
Dev*_*oop 29
嗯,这在Rails 4.0中对我有用:
render :text => "", :layout => true
Run Code Online (Sandbox Code Playgroud)
Max*_*nus 12
(复制Vasile的评论以提高可见度.)
对于rails 5.1,为了在不需要视图模板的情况下呈现布局,您需要使用
def index
render html: '', layout: true
end
Run Code Online (Sandbox Code Playgroud)
或者使用自定义布局
def index
render html: '', layout: 'mylayout'
end
Run Code Online (Sandbox Code Playgroud)
根据tfwright,这也将起作用:
def index
render html: nil, layout: true
end
Run Code Online (Sandbox Code Playgroud)
但是,以下内容不起作用:
render text: '', layout: 'mylayout'会给你一个错误,因为视图模板index.html.haml不存在.
render nothing: true, layout: 'mylayout'会给你一个错误因为nothing:true已弃用,并且该index模板不存在(但是,这适用于rails 4.2)
render body: '', layout: 'mylayout' 将渲染''(没有布局)
render plain: '', layout: 'mylayout' 将渲染''(没有布局)
试试这个,这会将响应呈现给一个名为的文件sample.html,该文件可能是静态 html 文件。
并且您还可以将此文件放在一个公共位置,以便您可以将其加载到所有操作中
此页面中有您的静态内容,如果您需要动态页面,您.erb也可以有一个页面
在你的方法中
def index
@posts = Post.all
respond_to do |format|
format.html {render :file => "posts/sample"}
format.json { render json: @posts }
end
end
/post/sample.html
Run Code Online (Sandbox Code Playgroud)
华泰
| 归档时间: |
|
| 查看次数: |
8636 次 |
| 最近记录: |