0

テンプレートという言葉が適切かどうかはわかりません。テンプレートのブール値がtrueのモデルを、同じモデルのフォームビューで選択できるようにしたい。選択すると、選択したモデルの値がフォームに入力されます。

私はこの解決策について考えています:

  • テンプレート属性が true に設定されているフォームの横にモデルをリストします。
  • クリック時に AJAX を介してロードし、javascript を介してロードされた属性をフォームに入力します。

これにもっと良い方法があるかどうか疑問に思っていますか?

編集。:

わかりにくかったらすいません。

Model.rb にはブール属性 :template があります。テンプレートが true に設定されている場合。モデルのフォームビューに表示されます。

_form.html.haml:

:collection_select Model.where(:template => true)

選択すると、テンプレート モデルは新しいモデルの属性を古いテンプレート モデルの属性で埋めます。

このためのRailsの方法を見つけたいと思います。

4

2 に答える 2

2

モデルにクラス メソッドを追加して、テンプレート レコードを検索します。

def self.find_template_record
  template = where(template: true).first
  raise "no template found" if template.nil?
  return template
end

コントローラーで、テンプレート レコードを読み込み、複製します。dupをコピーするので使用しないでくださいid

def new
  @model = Model.find_template_record.clone
end
于 2013-06-02T18:56:44.550 に答える
0

ActiveRecord モデルを複製するには、そのdupメソッドを使用します。

@model = @template_model.dup        # create the base
@model.attributes = params[:model]  # override particular attributes
于 2013-06-02T18:54:25.527 に答える