3

私はRubyonRailsを初めて使用します。足場を使用して、モデルビューとコントローラーを作成していました。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 %>

私の管理者テーブルは次のとおりです:-

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)

誰かが私がこれを実装するのを手伝ってくれますか?

4

4 に答える 4

5

ファイルは、railsのpartialsと呼ばれる「_」アンダースコアで始まります。これは、ソフトウェア開発のDRY(繰り返さないでください)の原則を奨励します。パーシャルを再利用できます。この場合、_form.html.erbはnew.html.erbとedit.html.erbの両方の機能に使用できます。パーシャルを他のhtml.erbファイルでレンダリングしたり、コントローラー内で呼び出したりすることもできます。 render :partial => 'partial_name'partial_nameにアンダースコアを付けません。

于 2013-03-18T06:55:11.457 に答える
1

これは、1つの場所で変更を加えるだけでよいことを意味します。これは、コーディングでDo n't Repeat Yourself(DRY)と一致しています。

これを実装するには、必要なコードをパーシャル(_という名前)にドラッグするだけです。

インデックスや編集などのhtmlに含めるには、を挿入しますrender 'partial'。ここで、partialはアンダースコアなしの名前です。

具体的には、次のパターンを使用して、フォームの各アイテムを参照できます。

<%= f.label :email %>
<%= f.text_field :email %>
于 2013-03-18T06:56:48.880 に答える
1

ここでは、他の回答の助けを借りて回答を提供しようとしています。

Rails では、一般的なビュー コードをパーシャルと呼ばれるファイルに入れることができます (パーシャル@Sachin R'sについての回答を読んでください)。

あなたの場合、 scaffold を実行すると、ビューneweditビューは同じフォームを使用しています。そのため、フォームは部分 ( _form) に変換されました。したがって、部分的に変更を行うと、変更はとビュー_formの両方で利用可能になります。(そのため、先輩が変更を依頼したのです)、newedit_form

つまり、パーシャルは共通のコード セグメントであるため、変更するとサイト全体に適用されます。

于 2013-03-18T10:09:07.593 に答える
1

パーシャルについて読んでください。それらは、コードをドライアップするのに役立ちます。詳細はこちら

于 2013-03-18T06:58:09.997 に答える