第一个代码:
# matches/index.html.haml
%ul.match_list
- @matches.each do |match|
%li
=render match
# matches/_match.html.haml
%li
=match.id
Completed 200 OK in 665ms (Views: 496.3ms | ActiveRecord: 142.1ms)
Run Code Online (Sandbox Code Playgroud)
地狱慢了.
第二个代码:
# matches/index.html.haml
%ul.match_list
- @matches.each do |match|
%li
=match.id
Completed 200 OK in 196ms (Views: 30.0ms | ActiveRecord: 134.6ms)
Run Code Online (Sandbox Code Playgroud)
好多了.
为什么在不使用部分时这么快?
当我查看我的日志文件时,我得到以下行:
...
Rendered partials/_something.html.erb (11.8ms)
Rendered partials/_something.html.erb (123.8ms)
Rendered partials/_something.html.erb (8.2ms)
Rendered partials/_something.html.erb (7.3ms)
Rendered partials/_something.html.erb (7.1ms)
Rendered partials/_something.html.erb (8.5ms)
Rendered partials/_something.html.erb (7.2ms)
Rendered partials/_something.html.erb (7.1ms)
Rendered partials/_something.html.erb (7.4ms)
Rendered partials/_something.html.erb (7.9ms)
...
Run Code Online (Sandbox Code Playgroud)
我按照以下方式包括它们
@collection.each do |something|
render :partial => 'partials/something', :locals => {:something => something}
end
Run Code Online (Sandbox Code Playgroud)
我觉得很奇怪,在这种情况下,第二个渲染(相同的部分渲染)需要比任何其他渲染更长的时间.但是,当我重新加载页面时,其他一些渲染需要花费更多时间,而@collection-variable仍然处于相同的顺序.
我实际上并不知道如何描述这个.我的意思是,当它something导致缓慢的反应时,我能够弄明白.但它接缝只是一个随机的.这可能是一些内存泄漏吗?
我希望你知道答案=)!
我试图使用node.js渲染部分.这是我的代码.
app.js:
var express = require('express')
, routes = require('./routes');
var app = module.exports = express.createServer();
// Configuration
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
app.use(express.errorHandler());
});
// Routes
app.get('/', routes.index);
var products = require('./products.js');
app.get('/products', function(req, res) {
res.render('products/index', {locals: {
products: products.all
}
});
});
app.listen(3000);
Run Code Online (Sandbox Code Playgroud)
当我转到localhost:3000 /产品时,它应该呈现index.jade,它位于views文件夹中的products文件夹中.以上我使用views目录设置 app.set('views', __dirname + '/views');
index.jade:
h1 Products:
#products!= partial('partials/product', {collection: products}) …Run Code Online (Sandbox Code Playgroud) 我正在尝试用 2 个块创建视图。每个块都有不同的实时数据源。当我在主视图中使用 Jade 的包含时,:
extends ../layout
block content
link(rel='stylesheet', type='text/css', href='/stylesheets/people.css')
include ../store/peopleTemplate.pug
Run Code Online (Sandbox Code Playgroud)
我收到错误
Cannot read property 'people' of undefined.
Run Code Online (Sandbox Code Playgroud)
原因是数据仍在加载中。如果排除该包含,而是在恢复数据使用的函数中
res.render(template, { data:localData });
Run Code Online (Sandbox Code Playgroud)
模板不会添加到视图中。
如何将来自不同来源的动态数据的 2 个或多个部分视图添加到 1 个视图?谢谢
我有一个轨道应用程序,已经有点牵引力,但我有一个严重的头痛要处理.这是一种基本的资产管理应用程序 - 用户上传他们的照片,.pdfs,视频等,系统允许他们管理资产的呈现方式.
我开始使用相当标准的rails视图 - 这是由rails生成的 - 为index.html.erb.我有一个部分为每个资产呈现缩略图,如下所示:
<div id="preview"> </div>
Run Code Online (Sandbox Code Playgroud)
我想要的是缩略图是可点击的(很容易)但是当用户点击该按钮时,div的内容将被填充,好吧,基本上是edit.html.erb,但我猜它需要作为一个部分完成.我已经用直接的javascript管理了这个.
我可以访问新版"Agile Development on Rails"一书的出版前版本,任何人都可以通过该出版社获得该版本,但是关于AJAX的章节非常小,并且假定我拥有的这些东西比我更多,这就是我第一次涉足javascript和rails.
更新:回答"问题是什么"'回答',虽然我认为很清楚:
我需要在缩略图的部分内容中点击它来将编辑表单加载到div中?
如何为部分人员设置共享视图脚本路径以在Zend Framework中创建全局部分?
我们知道您可以在模块之间调用partials
e.g - echo $this->partial('partial_title','module_name');
Run Code Online (Sandbox Code Playgroud)
但是我们需要在根目录中设置一个部分文件夹(即在模块下面),以便所有视图都可以访问它.
有人建议设置共享视图脚本路径,这是怎么做到的?
在大型Rails项目中处理CSS的一些好方法是什么?理想情况下,我希望能够为每个部分包含CSS或CSS文件的链接.
我已经玩过使用content_for和yield,它允许我将CSS插入到页面的头部,其中部分位于其他地方,但是一些部分被多次使用会导致样式链接加倍.
我理想的解决方案是能够在每个部分插入样式表链接标记,然后在生产中将这些链接整理成一个仅包含一次的大样式表.
通过Michael Hartl的Rails教程第2章第10章练习5,我遇到了部分和集合的问题,并在部分内部使用了部分.
第10章,练习5指出: "使用partials,消除清单10.46和清单10.47中删除链接中的重复."
代码清单10.46:app/views/microposts/_micropost.html.erb
<li>
<span class="content"><%= micropost.content %></span>
<span class="timestamp">
Posted <%= time_ago_in_words(micropost.created_at) %> ago.
</span>
<% if current_user?(micropost.user) %>
<%= link_to "delete", micropost, method: :delete,
confirm: "You sure?",
title: micropost.content %>
<% end %>
</li>
Run Code Online (Sandbox Code Playgroud)
代码清单10.47:app/views/shared/_feed_item.html.erb
<li id="<%= feed_item.id %>">
<%= link_to gravatar_for(feed_item.user), feed_item.user %>
<span class="user">
<%= link_to feed_item.user.name, feed_item.user %>
</span>
<span class="content"><%= feed_item.content %></span>
<span class="timestamp">
Posted <%= time_ago_in_words(feed_item.created_at) %> ago.
</span>
<% if current_user?(feed_item.user) %>
<%= link_to "delete", feed_item, method: :delete, …Run Code Online (Sandbox Code Playgroud) 嗨,我是Ruby on Rails的新手,我正在网上关注Michael Hartl的书.在局部模板他的书的部分.他用来渲染部分的代码是
<%= render 'layouts/stylesheets' %>
但是我得到了这个错误.
我读了API并尝试了这个
<%=render :partial => "/layouts/stylesheets" %>但仍然无法想象这一个.
感谢您的帮助!
render actionview partials missing-template ruby-on-rails-3.2
宝石子弹说我在装载到页面的每餐食物加载meal_foods时出现N + 1错误.让我解释...
在我的rails应用程序中,我有一些嵌套的部分呈现如下:
膳食>膳食...
因此,呈现多餐,然后对于每个呈现的餐,其中相应的餐食也在其中呈现(如果有的话).
这是代码.
在用餐/秀中:
<% if @meals != nil %>
<%= render(partial: "meal", collection: @meals) %>
<% else %>
<p style="text-align:center">No meals created yet.</p>
<% end %>
Run Code Online (Sandbox Code Playgroud)
这是在_meals.html.erb中
<tbody>
<%= render(partial: "meal_foods/meal_food", collection: meal.meal_foods) %>
</tbody>
Run Code Online (Sandbox Code Playgroud)
最后,这是_meal_foods.html.erb的一部分
<td class="left"><%= meal_food.name %></td>
<td class="left">
<%= form_for meal_food, action: :update do |f| %>
<%= f.text_field :servings %>
<% end %>
</td>
Run Code Online (Sandbox Code Playgroud)
膳食控制器:
def show
@meals = current_client.meals
@new_meal = current_client.meals.build
end
Run Code Online (Sandbox Code Playgroud)
具体错误:
N+1 Query detected
Meal => [:meal_foods] …Run Code Online (Sandbox Code Playgroud) partials ×10
javascript ×3
node.js ×2
pug ×2
views ×2
actionview ×1
ajax ×1
collections ×1
css ×1
express ×1
php ×1
render ×1