Ruby Rails 4.x,嵌套模型,最佳实践
Ruby on Rails 4.x, nested models, best practise
当您需要将嵌套属性粘贴到不同位置时,寻求在 show action 中列出嵌套属性的最佳实践。
我有两个模型:Product & ProductDetail,ProductDetails 属于 Product,Product has_many ProductDetails。在表单和嵌套渲染中,它就像一个魅力,没有问题(特别是在 Ryan 的 RailsCast 196/197 之后(感谢 boet!)
现在,我需要为我的产品发布视图。基本上它只是一种商业产品。
所以在我的控制器中,我有一些常规的东西,比如
@product = Product.find ...
@product_details = @product.product_details.build
在显示操作视图中时
=@product.title
=@product.price
=@product.sku
-@product_details.each do |d|
=d.attribute1
=d.attribute2
... some other view details here..
-@product_details.each do |d|
=d.attribute3
=d.attribute3
如您所见,我多次将循环放在视图中,因为我需要在不同的地方显示它们。
我想知道什么是最佳实践(数组在这里可能有意义),请提出建议。
我计划通过使用单选按钮和 jQuery 事件来扩展页面功能以更改(即价格)和特定字段的值,最终更改价格和订单详细信息。
如果能得到一些很好的阅读/示例 rails + 专门针对嵌套模型及其属性的 js 组合,那就太好了。另一件事是我计划围绕主要产品构建多个嵌套模型并根据客户行为向他们展示/更新/编辑等。每个模型的嵌套模型数量是否有最佳实践?
我相信你最终可能会找到这个 - 但只是为了弥补这一点......
是的,您希望使用 'render' 命令将数组传递给部分以保留它 'DRY'。这允许您按照 Ruby 方式,以最小的麻烦在所有您想要的部分中重复使用字段...也请查看 partials/layout 上的教程以获取视图(Link)。我从未读过高级模式书 - 去年情况可能发生了变化。我知道很多人随机建议将 Cocoon 与 simpleForm 一起使用,有时 HAML 也会出现以替换 ruby 的 *.erb 部分渲染。
你错过了他做的第二部分......对我很有帮助的是额外的更新 #403: Dynamic Form。具体来说,他要求按复选框类型进行渲染,这会为您提供一个加载复选框类型……它是动态局部加载……这是关于如何在循环中最好地重复每个复选框的答案。
应用/浏览量/产品/_form.html.erb
<%= f.fields_for :properties, OpenStruct.new(@product.properties) do |builder| %>
<% @product.product_type.fields.each do |field| %>
<%= render "products/fields/#{field.field_type}", field: field, f: builder %>
<% end %>
<% end %>
当您需要将嵌套属性粘贴到不同位置时,寻求在 show action 中列出嵌套属性的最佳实践。
我有两个模型:Product & ProductDetail,ProductDetails 属于 Product,Product has_many ProductDetails。在表单和嵌套渲染中,它就像一个魅力,没有问题(特别是在 Ryan 的 RailsCast 196/197 之后(感谢 boet!)
现在,我需要为我的产品发布视图。基本上它只是一种商业产品。
所以在我的控制器中,我有一些常规的东西,比如
@product = Product.find ...
@product_details = @product.product_details.build
在显示操作视图中时
=@product.title
=@product.price
=@product.sku
-@product_details.each do |d|
=d.attribute1
=d.attribute2
... some other view details here..
-@product_details.each do |d|
=d.attribute3
=d.attribute3
如您所见,我多次将循环放在视图中,因为我需要在不同的地方显示它们。
我想知道什么是最佳实践(数组在这里可能有意义),请提出建议。
我计划通过使用单选按钮和 jQuery 事件来扩展页面功能以更改(即价格)和特定字段的值,最终更改价格和订单详细信息。
如果能得到一些很好的阅读/示例 rails + 专门针对嵌套模型及其属性的 js 组合,那就太好了。另一件事是我计划围绕主要产品构建多个嵌套模型并根据客户行为向他们展示/更新/编辑等。每个模型的嵌套模型数量是否有最佳实践?
我相信你最终可能会找到这个 - 但只是为了弥补这一点......
是的,您希望使用 'render' 命令将数组传递给部分以保留它 'DRY'。这允许您按照 Ruby 方式,以最小的麻烦在所有您想要的部分中重复使用字段...也请查看 partials/layout 上的教程以获取视图(Link)。我从未读过高级模式书 - 去年情况可能发生了变化。我知道很多人随机建议将 Cocoon 与 simpleForm 一起使用,有时 HAML 也会出现以替换 ruby 的 *.erb 部分渲染。
你错过了他做的第二部分......对我很有帮助的是额外的更新 #403: Dynamic Form。具体来说,他要求按复选框类型进行渲染,这会为您提供一个加载复选框类型……它是动态局部加载……这是关于如何在循环中最好地重复每个复选框的答案。
应用/浏览量/产品/_form.html.erb
<%= f.fields_for :properties, OpenStruct.new(@product.properties) do |builder| %>
<% @product.product_type.fields.each do |field| %>
<%= render "products/fields/#{field.field_type}", field: field, f: builder %>
<% end %>
<% end %>