如何重构 Rails 表单组件



我正在尝试在new.html.erbedit.html.erb中部分化重复的form_for
我认为有两种方法可以做到这一点:

  1. 将整个form_for代码放入部分。

  2. 仅将字段元素放入部分。

你选择哪个?这是品味问题吗?我想知道您的选择是否有任何实际原因。
如果你有第三种方式,它也欢迎。

第一种方式:

 <%= render 'form', object: @user, button_name: "Create my account" %>

部分(_form.html.erb)是:

<%= form_for @user do |f| %>
  <%= f.text_field :name %>
  <%= f.submit button_name %>
<% end %>

第二种方式:

 <%= form_for @user do |f| %>
   <%= render 'fields', f: f %>
   <%= f.submit "Create my account" %>
 <% end %>

部分(_fields.html.erb)是:

<%= f.text_field :name %>

示例很简单,您有更多的字段和标签。

第一种方式。可读性在这里很重要。第二种方式真的很糟糕。

如果您需要检查它是否是部分中的新记录,您可以添加以下内容:

<% if @user.new_record? %>
  ... your code here ...
<% end %>

最新更新