我正在使用RABL格式化Rails API的输出.我试过以下代码
message.rabl:
object @message
attributes :id,:description,:created_at,:created_by_user_id
child @comments do |t|
partial("user/comment", :object => @comments)
end
Run Code Online (Sandbox Code Playgroud)
comments.rabl:
object @comments
attributes :comment_body
Run Code Online (Sandbox Code Playgroud)
我的问题是我的message.rabl没有呈现我的部分即comments.rabl.什么是在rabl中渲染局部的正确方法.谢谢.
在Symfony 2中是否存在部分内容,从任何地方都可以重复使用模板?
我找到了include http://twig.sensiolabs.org/doc/tags/include.html,但这只允许在特定的目录结构中呈现模板.
我真的想要一个包含所有部分模板的文件夹,而不是将它们集中到我的主视图中?
所以我希望能够做类似的事情
{% include "Bundle:Default:Partials:view.html.twig" %}
Run Code Online (Sandbox Code Playgroud)
更新
我不想使用强制结构Bundle:Controller:Template结构.我不想使用它,因为它意味着将我的所有模板部分放入我的主视图模板中.我需要能让我这样做的东西Bundle:Controller:PartialDir:Template
这看起来像是一个愚蠢的,简单的修复(它可能是),但我一直在网上搜索SO和其他区域没有运气.undefined method local variable error 'f'在我的观点中,我得到的是我的部分内容.我假设"do block"在到达部分之前以某种方式结束,但我不是100%肯定.
局部
<% if user_admin_or_premium? %>
<div class="form-group">
<%= f.label :private, class: 'checkbox' do %>
<%= f.check_box :private, :true %> Private Wiki?
<% end %>
</div>
<% end %>
Run Code Online (Sandbox Code Playgroud)
视图
<div class="col-md-8">
<%= form_for @wiki do |f| %>
<div class="form-group">
<%= f.label :title %>
<%= f.text_field :title, class: 'form-control', placeholder: "Enter Wiki Title" %>
</div>
<div class="form-group">
<%= f.label :body %>
<%= f.text_area :body, rows: 10, class: 'form-control', placeholder: "Enter Wiki Body" …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,用户在进入主站点之前被直接登录。
我正在整个站点上呈现部分导航栏,但我不希望在登录页面上呈现导航栏。我不想为了防止这种情况而必须将导航栏代码复制并粘贴到所有视图中。
如果有一种方法可以停止显示在登录屏幕上的导航栏,而不必删除部分内容,那将会更干净。
您如何限制应用程序中一页的部分视图?
我正在使用设计。
我认为这篇文章不需要代码,但如果有帮助,我很乐意提供。谢谢。
我试图将局部变量从控制器传递到视图:
# pages_controller.rb
def my_method
render template: "pages/new_page", message: @message
end
# new_page.html.erb
<% if message %>
Do something
<% else %>
Do something else
<% end %>
Run Code Online (Sandbox Code Playgroud)
但这给了我未定义的局部变量或方法message错误,而在部分情况下这可以正常工作。
我知道这可以这样解决:
def my_method
render template: "pages/new_page", locals: { message: @message }
end
Run Code Online (Sandbox Code Playgroud)
我只是想知道,在没有当地人的情况下,这是如何工作的。
ruby-on-rails local-variables actionview partials actioncontroller
我在Rails应用程序中有一个花哨的"工作表"样式视图,这个视图占用时间太长.(在开发模式下,是的,我知道那里没有缓存,"在57893ms完成(查看:54975,数据库:855)")工作表是使用辅助方法呈现的,因为我无法忍受保持无数的小部分工作表中的各种行.现在我想知道部分实际上是否会更快?
我已经分析了页面加载并确定了一些对象缓存会刮掉几秒钟的情况,但是配置文件输出表明花费了大量时间来简单地循环遍历Worksheet模型的组成对象并附加来自帮手.这是我正在谈论的一个例子:
def header_row(wksht)
content_tag(:thead, :class => "ioe") do
content_tag(:tr) do
html_row = []
for i in (0...wksht.class::NUM_COLS) do
html_row << content_tag(:th, h(wksht.column_headings[i].upcase),
:class => wksht.column_classes[i])
end
html_row.join("\n")
end
end
end
Run Code Online (Sandbox Code Playgroud)
OTOH使用partials意味着打开文件,分离Ruby解释器,从长远来看,聚合一堆字符串,对吗?所以我想知道是否有另一种方法可以加快助手的速度.我应该使用像stringstream这样的东西(在Ruby中存在吗?),我应该摆脱content_tag调用,转而支持我自己的""字符串插值...我愿意编写自己的性能测试,并分享结果,如果你有任何建议的方法我已采取的方法.
由于它是一个相当复杂的视图(并且还有一个可编辑的版本),我宁愿不要多次重写和描述整个事物.:)
一些相关阅读:
http://www.viget.com/extend/helpers-vs-partials-a-performance-question/(旧)
http://www.breakingpointsystems.com/community/blog/ruby-string-processing-overhead/
http ://blog.purepistos.net/index.php/2008/07/14/benchmarking-ruby-string-interpolation-concatenation-and-appending/
@tadman: 有行总数和列总数(以及更多的柱状算术),并且因为它们不仅仅是总数,而且还依赖于数据库中的其他"幻数",我在Ruby代码而不是Javascript中实现它们.(DRY和单元可测试.)Javascript仅在编辑视图中使用,仅用于添加/删除行(仅限客户端),并在单元格内容更改时获取具有新总计的工作表.它获取整个表,因为当输入单元格发生更改时,将近一半的值会更新.
工作表及其行实际上是虚拟模型; 它们并不存在于数据库中,而是汇集了大量真正的AR对象.每次视图呈现时都会创建它们(但在开发模式下需要1.7秒,所以我并不担心它).
我想我可以传输一个数字矩阵,而不是标记内容,并让JS将其解压缩到表格中.但这很快就无法维持.
我的指南针项目目录结构如下所示
s3z@s3z:~/Desktop/compass_project$ tree
.
??? basic.html
??? config.rb
??? css
? ??? ie.css
? ??? print.css
? ??? screen.css
??? index.html
??? partials
? ??? _normalize.scss
??? sass
??? ie.scss
??? print.scss
??? screen.scss
Run Code Online (Sandbox Code Playgroud)
我的screen.scss文件看起来像这样
@import "compass";
@import "partials/normalize";
Run Code Online (Sandbox Code Playgroud)
当我添加@import "partials/normalize";并保存它时,Compass会向我发出以下错误
>>> Compass is watching for changes. Press Ctrl-C to Stop.
>>> Change detected at 22:58:53 to: screen.scss
error sass/screen.scss (Line 2: File to import not found or unreadable: partials/normalize.
Load paths:
/home/max/Desktop/nettut_compass_tut/sass
/home/max/.rvm/gems/ruby-1.9.3-p194/gems/compass-0.12.2/frameworks/blueprint/stylesheets
/home/max/.rvm/gems/ruby-1.9.3-p194/gems/compass-0.12.2/frameworks/compass/stylesheets
Compass::SpriteImporter)
overwrite ./css/screen.css …Run Code Online (Sandbox Code Playgroud) 我正在AngularJS中创建一个测验.我将测验问题存储在我的控制器中的数组中,如下所示:
$scope.questions = [
{title: 'Challenge 1', about: 'Instructions', status: 'answered', correct_response: 42},
{title: 'Challenge 2', about: 'Instructions', status: 'unanswered', correct_response: 42}
];
Run Code Online (Sandbox Code Playgroud)
我正在ng-repeat用来显示问题.但是,每个问题的回复表格都不同.例如,有些人会使用文字输入,而有些则会使用复杂的谜题.
理想情况下,我希望有一个视图(部分?)加载并显示当前未答复问题的响应表单.我还需要每个partial中的代码来影响我的模型的属性.例如:
<label> Response </label> <input ng-model="response">
Run Code Online (Sandbox Code Playgroud)
我的问题是,当测验问题的状态发生变化时,如何在不使用路由的情况下动态加载部分内容?
我用块助手创建了一个列表#each,但我不能将变量传递给我的每个循环中的部分.
{{#each a-z.letters}}
{{this}} /*[1]*/
<li class="list-inline__item">
{{>button btn="btn-text" addClass='-large' link='letter/{{this}}' label='{{this}}'/*[2]*/}}
</li>
{{/each}}
Run Code Online (Sandbox Code Playgroud)
链接部分:
<a href="{{link}}" class="btn-text {{addClass}}">{{label}}</a>
Run Code Online (Sandbox Code Playgroud)
输出是:
<ul class="list-inline">
A /*[1]*/
<li class="list-inline__item">
<a href="letter/{{this}}/*[2]*/" class="btn-text -large">{{this}}/*[2]*/</a>
</li>
....
Run Code Online (Sandbox Code Playgroud)
[1]仅用于测试,它的工作原理
[2]如果我想将它传递到局部内部它不会渲染我的参数
UPDATE
所以这是我的助手,现在用网址扩展我的href.
Handlebars.registerHelper('updateLink', function(options){
var insertAt = "href=";
var content = options.fn(this).trim();
var pos = content.indexOf(insertAt) + insertAt.length+1; // +1 for the quotation marks
content = content.slice(0, pos) + options.hash.url + content.slice(pos, content.length);
return new Handlebars.SafeString(content );
});
Run Code Online (Sandbox Code Playgroud)
链接部分:
{{#updateLink url="letters/"}}
{{>button link=this label=this …Run Code Online (Sandbox Code Playgroud) 我不熟悉使用Hugo和Go模板.如何使用Hugo从基本文件中定义的部分文件中访问变量?
例如:我有一个index.html文件,其中包含读取存储在events.json数据目录中的文件中的数据并将其存储在变量中的代码.如何从其他文件访问该变量?
的index.html
{{ $events := .Site.Data.events }}
{{ partial "people" . }}
Run Code Online (Sandbox Code Playgroud)
people.html
// access the events variable from the index.html
{{ $events }}
Run Code Online (Sandbox Code Playgroud)
我真的希望这是有道理的.如果需要,我可以尝试澄清更多.
partials ×10
actionview ×1
angularjs ×1
api ×1
compass-sass ×1
forms ×1
go-templates ×1
helpers ×1
hugo ×1
import ×1
javascript ×1
parameters ×1
performance ×1
rabl ×1
sass ×1
string ×1
symfony ×1
templates ×1
twig ×1