问题标签 [partials]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1495 浏览

ruby-on-rails - 如何在 Rails 2.3.5 中从模型中渲染 Partial

我有一个 Rails 2.3.5 应用程序,我试图从模型中渲染几个部分(我知道,我知道——我不应该这样做)。我这样做的原因是我将 Comet 服务器 (APE) 集成到我的 Rails 应用程序中,并且需要根据模型的事件(例如 after_create)推出更新。

我试过这样做:

这允许我渲染不使用用户助手的简单部分,但是如果我尝试在我的部分中使用 link_to,我会收到一条错误消息:

我确保传递给“project_path(project)”的对象不是零。我也试过包括:

在包含进行上述“渲染”调用的方法的模块中。

有谁知道如何解决这个问题?

谢谢

0 投票
1 回答
1209 浏览

ruby-on-rails - Rails 3 渲染:部分

我正在将我的 1.8.7 rails 应用程序迁移到 rails 3。但是我有一个部分问题:我有以下部分:

在我的 cms 控制器中:
@clients = Client.all
group = render_to_string :layout => 'layouts/window', :partial => 'clients/index'

在我的“客户/索引”部分:
<%= render :partial => 'clients/item', :collection => @clients %>

这在 rails 1.7.8 中效果很好,但在 rails 3 中只有索引中的部分被渲染了!。因此,为了澄清这一点,控制器中的 group 变量不会从布局中获取 html。奇怪的是窗口布局是 _window.erb (如果我做 window.html.erb 或只是 window.erb rails 找不到它,这很奇怪)。

有人知道这种行为对于rails 3是否正常?

谢谢!

0 投票
2 回答
1301 浏览

javascript - 通过部分重复相同的控件时,在 Rails 中自动生成 HTML 元素 ID

我在 Rails 中使用 partials 结合 jQuery 子字段模板来动态生成具有多个嵌套子属性的表单。在这些部分中是当表单中发生各种事件(例如 onChange)时触发的 JavaScript,并且执行的代码需要更改相关但不同的表单元素的 DOM。在这种特殊情况下,我使用它将销售点类型解决方案中的多个销售交易添加到特定的交易组,并控制为每笔交易收集哪些数据。因此,例如:

  1. 用户单击将 3 条新交易记录添加到交易组的链接。
  2. 用户在这三个事务记录中的每一个中设置不同的值,每个记录都会触发一个 onChange 事件,该事件调用一个 JS 函数,该函数需要以不同的方式为每个事件操作 DOM。(例如:交易 1 可能是退货,因此将交易文本从成本更改为退款,交易 2 可能是服务,因此更改应税状态,等等...)
  3. JS 函数必须能够为正确的事务更改 DOM。

我的问题是 #3 - 被修改的 DOM 元素与生成事件的元素不同,所以我不能使用 JS this。它们是公共父元素的一部分(即它们共享父<div>),因此我可以使用 jQuery 父/子选择器导航到 DOM 中的正确元素。但是,即使这样也需要 div id 属性具有一些唯一性,而且我不确定 Rails 中动态生成这些属性的最佳方式。

我想我可以使用随机值,但这似乎很糟糕,因为它并不能真正保证是唯一的,而且看起来就像一个 hack。我想我可以尝试引入某种计数器,但这似乎违反了 Rails 开发的原则。

任何指导表示赞赏。谢谢!

0 投票
1 回答
81 浏览

ruby-on-rails - 是否可以在部分中将属性绑定到 forms_helper.select?

在 Rails 视图中,我试图<select>为许多具有受限值的不同字符串字段显示一个下拉列表。

我一直在尝试使用部分(如下)来执行此操作,但当前值未在<select>列表中选择。

  • 是否可以部分执行此操作?如果是这样,怎么做?
  • 有没有更好的方法可以采取?

编辑.html.erb:

_select.html.erb:

0 投票
1 回答
541 浏览

ruby-on-rails - Ajax 在 Rails 中为多个模型形成局部

我有很多视图(new.html.erbedit.html .erb 主要是)。为了避免代码重复,我假装使用部分:

app/views/cities/_state_city_form.html.erb

我也有 Ajax 回调内容:

应用程序/视图/城市/by_state.html.erb

我的城市控制器:

应用程序/控制器/cities_controller.rb

然后我会简单地在需要的地方调用部分:

应用程序/视图/用户/new.html.erb

app/views/employee/new.html.erb

在这里,我可以将 : user:employee传递给部分,但是如何将它们传递给 Ajax 回调?

0 投票
1 回答
158 浏览

ruby-on-rails - 包含表单的部分出现在两个控制器中,但未能在其中一个上提交

我有一个包含表单的部分:

我在两个控制器中使用它:消息和标签。它在消息控制器中运行良好,但在标签控制器中运行良好。当它在 tags#show 中呈现时,它会自动填充标签字段。当从 tags#show 提交消息时,我被重定向到网站的根目录,并显示一个 flash 错误“标签不存在”。

标签控制器:

如果不清楚:部分显示在视图中,其中的表单只是不提交来自标签控制器的数据并被重定向。消息控制器的部分工作正常。这是一个 Rails 2.3.x 应用程序。感谢您阅读我的问题,感谢您抽出宝贵的时间。

0 投票
2 回答
2335 浏览

ruby-on-rails - helpers 真的比 partials 快吗?弦乐建设呢?

我在 Rails 应用程序中有一个花哨的“工作表”样式视图,加载时间太长。(在开发模式下,是的,我知道那里没有缓存,“在 57893 毫秒内完成(查看:54975,DB:855)”)工作表是使用辅助方法呈现的,因为我无法忍受为工作表中不同类型的行。现在我想知道 partials 是否真的会更快?

我已经分析了页面加载并确定了一些对象缓存将减少几秒钟的情况,但配置文件输出表明大量时间用于简单地循环通过 Worksheet 模型的组成对象并附加字符串输出帮手。这是我正在谈论的一个例子:

OTOH 使用 partials 意味着打开文件,分离 Ruby 解释器,从长远来看,聚合一堆字符串,对吗?所以我想知道是否有另一种方法可以加快助手的速度。我应该使用类似 stringstream 的东西(在 Ruby 中是否存在?),我是否应该摆脱 content_tag 调用以支持我自己的 "" 字符串插值......我愿意编写自己的性能测试,并分享结果,如果您对我已经采取的方法有任何建议的替代方案。

由于这是一个相当复杂的视图(并且也有一个可编辑的版本),我宁愿不要多次重写和分析整个事情。:)

一些相关阅读:

http://www.viget.com/extend/helpers-vs-partials-a-performance-question/(旧)
http://www.breakpointsystems.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 中实现了它们. (干燥且可单元测试。)Javascript 仅用于编辑视图,仅用于添加/删除行(仅限客户端)并在单元格内容更改时获取包含新总数的工作表。它获取整个表格,因为当输入单元格更改时,将近一半的值会更新。

工作表及其行实际上是虚拟模型;它们并不存在于数据库中,而是聚合了大量真实的 AR 对象。每次渲染视图时都会创建它们(但在开发模式下需要 1.7 秒,所以我并不担心)。

我想我可以传输一个数字矩阵,而不是标记的内容,然后让 JS 将其解压缩到工作表中。但这很快就无法维护。

0 投票
2 回答
1293 浏览

ruby-on-rails - Rails 视图:如何将变量传递给部分布局?

在我的一个观点中,我将布局应用于代码块:

布局是一个 div,所有四个边都有 png 阴影。

由于我在整个站点中都使用此布局,因此我想将一个变量传递给指定阴影 div 宽度的布局。我尝试在代码块中使用内容:

这不起作用,而是导致整个代码块的双重渲染。

解决这个问题的最佳方法是什么?

0 投票
1 回答
97 浏览

xml - mvc 2 对 xml 部分的帮助

好的,所以为了向 Fusion Charts 提供数据,我需要给它一些 XML .. 我已经把它缩小到这个

呈现

但我需要渲染的是..

我怎样才能让 RenderPartial 把没有空格的字符串还给我?

0 投票
2 回答
303 浏览

php - 部分依赖于业务逻辑时应该如何加载?

我使用术语“部分”来指代在许多视图中重复的一小部分演示代码。例如,侧边栏。在 vanilla PHP 中,业务和表示逻辑混合在一起,包括一个侧边栏是没有问题的:

但是,在 MVC 设计模式中,表示逻辑必须保留在视图中,而业务逻辑必须保留在控制器中。如果我希望无条件地包含一个部分,那么这是没有问题的,因为我可以include('sidebar.php')在我看来。但是,我不能再有条件地这样做,因为如果我认为逻辑被禁止的话。

我尝试了许多解决方案,但它们都有问题。我目前正在使用解决方案 2:

解决方案 1

在我的视图类中创建一个包含函数,它可以有条件地包含来自我的控制器的内容。所以在我的控制器中,我可以有以下逻辑:

问题: sidebar.php 需要在特定点包含到 index.php 中,这需要视图对象上的 include 方法进行某种解析。

解决方案 2

将部分控件移出视图并将它们放入控制器中:

问题:将大部分表示逻辑移动到控制器领域。对我来说,决定是否包含标题似乎更自然。事实上,我能找到的每个 PHP MVC 教程都有部分在视图而不是控制器的控制下。

解决方案 3

复制视图并更改克隆,使其包含侧边栏。然后我可以有条件地在控制器中加载一个或另一个:

问题:代码重复。考虑一下如果我有 2 个需要有条件加载的侧边栏会发生什么。然后我需要index.php, indexWithSidebar1.php, indexWithSidebar2.php, indexWithSidebar1And2.php. 这只会在每种情况下变得更糟。请记住,将侧边栏作为部分取出的全部目的是为了避免复制它,而这种方法似乎违背了这一点。

这些解决方案中的任何一个都是“正确”的解决方案吗?如果是,我该如何克服他们的问题?那里有更好的方法吗?