【发布时间】:2013-12-10 22:04:03
【问题描述】:
我的问题考虑了 Rails 中的部分处理。我只是无法理解某些设计决策的原因。
如果我像这样渲染一个局部:
<%= render partial: 'foo/bar', object: @herbie %>
@herbie 是 Car 类的对象。为什么默认情况下局部变量称为bar 而不是car,至少对我而言,在大多数情况下会更合理。
如果各种部分共享一个共同的布局,我必须在每次使用render partial: 时添加layout: ...。这对我来说似乎很奇怪!是不是更有可能有各种部分共享相同的布局而不是相反?在部分中定义布局,或者在 ActiveRecord 模型中添加to_layout_path 方法不是更合理吗?
更新:
我明白使用部分名称可能会更好,因为这在部分上下文中是众所周知的。然而,使用标签 :locals 和 :as 搞砸了这个论点。
在实际情况下,我想根据对象的状态(可能是打开或关闭的问题)使用不同的部分。我将部分渲染的决定移到了Question.to_partial_path 方法,这似乎很优雅。但是我将部分命名为open_question 和closed_question,这使得部分代码不可读。
如果我考虑不同类型的问题,情况会变得更糟。
我希望在部分中我们总是对传入的模型做出一些假设。因此在closed_question 我确定我得到了一个问题 - 因此我希望变量被称为问题。另一方面,我可以想象我们传递一些不同的东西的情况,这些东西只是表现得恰到好处(Duck-typing)。
我关于部分的时间含义是,在部分中应该可以定义给定参数的名称以及使用的布局文件。 该参数确实可以通过引入一个对我来说有点不干净的新变量(question = open_question)来实现。
【问题讨论】:
标签: ruby ruby-on-rails-3.2 ruby-on-rails-4 renderpartial