使用单元格新建和创建操作
New and Create actions using Cells
我正在尝试在 Rails 4 项目中实施 Cells gem。
我对为模型渲染表单 Cell 有点困惑。我环顾了 Google,但似乎找不到涵盖此内容的教程。大多数教程只涵盖一个 :show Cell.
- 实施单元格表单是否可行/良好做法?
- 你是如何创建和渲染这个 Cell 的? (我假设这将类似于 :show Cell)
- 单元格进入表单提交流程的流程在哪里?参数是否仍然发布到控制器或 Cell?我在哪里进行表单提交验证?
任何人都可以帮助我澄清或指出有关此问题的教程吗?
'Best practice' 算不了什么。但我认为细胞提供了一个很好的模式。最棒的是可测试性。您可以编写非常好的测试来检查预期的 HTML 元素是否存在以及它们应该包含什么内容。这使得通过小单元测试而不是一个大页面测试(你永远不会这样做)来测试整个页面变得非常容易。那么为什么不也测试表格呢?
是的,很相似,请看最后我的例子。 (代码是一个演示,它基于我对细胞的简短实验,我相信细胞专家可以改进它)。
单元格的表单可以简单地 post 发送到控制器,就像任何其他表单在部分中一样。单元格只是一个视图层。单元格中的表单指向 url 并且 url 被路由到控制器。
# controllers/products_controller.rb
...
def new
@product = Product.new
end
def create
@product = Product.new(product_params)
end
...
# views/products/new.html.erb
<div class='new_product_form'>
<%= render_cell :products, :new, product: @product %>
</div>
# cells/products_cell.rb
class SubscriptionCell < Cell::Rails
def new(params)
@product = params[:product]
render
end
end
# cells/products/new.html.erb
<%= simple_form_for @product do |f| %>
<%= f.input :name %>
<%# etc... %>
<% end %>
我正在尝试在 Rails 4 项目中实施 Cells gem。
我对为模型渲染表单 Cell 有点困惑。我环顾了 Google,但似乎找不到涵盖此内容的教程。大多数教程只涵盖一个 :show Cell.
- 实施单元格表单是否可行/良好做法?
- 你是如何创建和渲染这个 Cell 的? (我假设这将类似于 :show Cell)
- 单元格进入表单提交流程的流程在哪里?参数是否仍然发布到控制器或 Cell?我在哪里进行表单提交验证?
任何人都可以帮助我澄清或指出有关此问题的教程吗?
'Best practice' 算不了什么。但我认为细胞提供了一个很好的模式。最棒的是可测试性。您可以编写非常好的测试来检查预期的 HTML 元素是否存在以及它们应该包含什么内容。这使得通过小单元测试而不是一个大页面测试(你永远不会这样做)来测试整个页面变得非常容易。那么为什么不也测试表格呢?
是的,很相似,请看最后我的例子。 (代码是一个演示,它基于我对细胞的简短实验,我相信细胞专家可以改进它)。
单元格的表单可以简单地 post 发送到控制器,就像任何其他表单在部分中一样。单元格只是一个视图层。单元格中的表单指向 url 并且 url 被路由到控制器。
# controllers/products_controller.rb ... def new @product = Product.new end def create @product = Product.new(product_params) end ... # views/products/new.html.erb <div class='new_product_form'> <%= render_cell :products, :new, product: @product %> </div> # cells/products_cell.rb class SubscriptionCell < Cell::Rails def new(params) @product = params[:product] render end end # cells/products/new.html.erb <%= simple_form_for @product do |f| %> <%= f.input :name %> <%# etc... %> <% end %>