【问题标题】:Why to use _form.html.erb in rails为什么在 Rails 中使用 _form.html.erb
【发布时间】:2013-03-18 06:51:04
【问题描述】:

我是 Ruby on Rails 的新手。我使用脚手架为 admin 创建模型视图和控制器

现在我的一位前辈告诉我为管理员在_form.html.erb 中进行更改。我不知道如何实现它。此外,与 _form.html.erb 相比,使用/进行更改的优点或缺点是什么正常方法(更改索引、新建、显示和编辑)

我的_form.html.erb如下:-

<%= form_for(@admin) do |f| %>
  <% if @admin.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@admin.errors.count, "error") %> prohibited this admin from being saved:</h2>

      <ul>
      <% @admin.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

我的 Admin 表如下:-

id serial NOT NULL,
  username character varying(20) NOT NULL DEFAULT ''::character varying,
  email character varying(255),
  first_name character varying(100),
  middle_name character varying(100),
  last_name character varying(100),
  designation character varying(255),
  office_phone character varying(255),
  deleted integer NOT NULL DEFAULT 0,
  super_admin boolean NOT NULL DEFAULT false,
  created_at timestamp without time zone NOT NULL,
  updated_at timestamp without time zone NOT NULL,
  CONSTRAINT admins_pkey PRIMARY KEY (id)

谁能帮我实现这个。在此先感谢

【问题讨论】:

  • _form.html.erb 是部分的,因此包含在其他 erb 模板中。部分用于减少代码库中的冗余。

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2


【解决方案1】:

文件以“_”下划线开头,在 rails 中称为部分。它鼓励DRY(不要重复自己)软件开发原则。您可以重用部分,在这种情况下,_form.html.erb 可用于 new.html.erb 和 edit.html.erb 功能。 我们可以在其他 html.erb 文件中渲染部分内容,也可以在控制器中调用。 render :partial =&gt; 'partial_name' partial_name 中没有下划线。

【讨论】:

    【解决方案2】:

    这意味着您只需要在一个地方进行更改,这与编码中的 Don't Repeat Yourself (DRY) 一致。

    要实现它,你只需将你想要的代码拖出一个部分(以_命名)。

    要将其包含在 index、edit 等的 html 中,请插入 render 'partial',其中 partial 是它的名称,不带下划线。

    特别是在您的示例中,您可以使用以下模式引用表单的每个项目

    <%= f.label :email %>
    <%= f.text_field :email %>
    

    【讨论】:

      【解决方案3】:

      阅读部分内容。他们帮助你干掉你的代码。阅读更多here

      【讨论】:

        【解决方案4】:

        这里我试图在其他答案的帮助下给你一个答案,

        在 Rails 中,通用视图代码可以放在名为 partials 的文件中,(阅读 @Sachin R's 关于 partials 的答案),partials 基本上可以避免代码重复并保持代码干净/可维护。

        在您的情况下,当您运行 scaffold 时,您的 newedit 视图使用相同的形式。由于这个原因,表单已转换为部分 (_form)。因此,当您在 _form 部分中进行更改时,这些更改将可用于 newedit 视图。 (这就是为什么您的前辈要求在_form 中进行更改),

        因此,底线是,由于部分是公共代码段,一旦您更改它们,它将适用于整个站点。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-01-11
          • 1970-01-01
          • 1970-01-01
          • 2016-08-23
          • 2012-06-03
          • 1970-01-01
          • 1970-01-01
          • 2021-09-01
          相关资源
          最近更新 更多