采取离散新行动的好处?

问题描述 投票:0回答:1

我在 05:15 的 Go Rails 视频中看到了显示的代码: 视频教程

<%= form_with model: Link.new do |form| %>
    # ...
<% end %>

通常我会写一个新动作。比如:

def new
  @link = Link.new
end

显然,在调用 form_with 时,可以跳过该操作并动态创建所需的对象。

新行动有什么好处?

是否有一个单独的路由,在调用时创建表单?

ruby-on-rails ruby model-view-controller
1个回答
0
投票

拥有控制器操作的主要优点是它将逻辑放在一个清晰连贯的地方。

视图本质上是混乱的,因为它是标记和代码的组合,它实际上应该只关心以最直接的方式将数据转换为 HTML。实例化或查询该数据应该是控制器的责任。

除了概念问题之外,还有直接的实际原因导致

<%= form_with model: Link.new do |form| %>
是一种不好的做法。

  • 它不必要地限制了表单代码的重用潜力。如果将模型传递给视图,则可以轻松使用相同的代码来创建和更新。
  • 您没有将用户输入绑定到模型实例,因此用户输入的任何内容都将在表单提交失败时丢失。

虽然你可以在视图中处理这个问题:

<%= form_with model: @link || Link.new do |form| %>
    # ...
<% end %>

这又将逻辑置于不属于它的视图中。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.