私は2つのモデルとリソースを持っています - 研究所と管理者。同じビューを使用して2種類のリソースを作成する
2種類のリソースを作成する1つの送信ボタンが表示されます。 2つの別々のフォームが必要ですか?例が素晴らしいだろう!
また、この2つのタイプのリソースを作成する場合、どのような命名規則を使用する必要がありますか。
InstituteとAdminの間には「has-many through」の関連があります。
私は2つのモデルとリソースを持っています - 研究所と管理者。同じビューを使用して2種類のリソースを作成する
2種類のリソースを作成する1つの送信ボタンが表示されます。 2つの別々のフォームが必要ですか?例が素晴らしいだろう!
また、この2つのタイプのリソースを作成する場合、どのような命名規則を使用する必要がありますか。
InstituteとAdminの間には「has-many through」の関連があります。
希望するデザインパターンはForm Object
です。
https://robots.thoughtbot.com/activemodel-form-objects
、あなたは、フォームを表すクラスを作成してデータを検証して、あなたが必要とするリソース(またはリソース)に持続することができます。
これにはVirtusという名前の宝石もあります。私にとっては、あなたが望むものがシンプルなのは残酷なことです。あなたはちょうどActiveModel
モデルを作成し、あなたのものをすることができます。
Would I need to have 2 separate forms?
回答はNonです。 1つのフォームをネストすることができます。あなたのこのような協会 "を通じて多くの持っている" Gessing:例:だから
は
class Institute < ActiveRecord::Base
has_many :mettings
has_many :admins, :through => :mettings
accepts_nested_attributes_for :mettings
end
class Admin < ActiveRecord::Base
has_many :mettings
has_many :institues, :through => :mettings
accepts_nested_attributes_for :mettings
end
class Metting < ActiveRecord::Base
belongs_to :institue
belongs_to :admin
accepts_nested_attributes_for :institues
end
コントローラー:
def new
@institue= Institue.new
@metting= @institue.mettings.build
@admin = @metting.build_admin
end
def create
Institue.new(institue_params)
end
def institue_params
params.require(:institue).permit(:id, mettings_attributes: [:id, :metting_time, admin_attributes: [:id ])
end
一つスティチュートは、多くの管理者throuth mettings
モデルを持っています
ビューは_form.erb.rbと呼ばれることがありますedit.erb.rb:
<% form_for(@institue) do |institue_form| %>
<%= institue_form.error_messages %>
<p>
<%= institue_form.label :name, "Institue Name" %>
<%= institue_form.text_field :name %>
</p>
<% institue_form.fields_for :mettings do |metting_form| %>
<p>
<%= metting_form.label :metting_date, "Metting Date" %>
<%= metting_form.date_field :metting_date %>
</p>
<% metting_form.fields_for :admin do |admin_form| %>
<p>
<%= admin_form.label :name, "Admin Name" %>
<%= admin_form.text_field :name %>
</p>
<% end %>
<% end %>
<p>
<%= institue_form.submit 'Create' %>
</p>
<% end %>
<%= link_to 'Back', institues_path %>
あなたの質問は抽象的すぎます。はい、おそらく、2つのフォームが必要になります。なぜなら、おそらく、それらは異なるコントローラに根ざしているからです。一方、あなたのリソースはかなり類似していて、Userモデルとuser_typeフィールドの両方を使用する場合は、AdminやUserなどの異なるタイプしか持てません。それはすべて依存している。 –
2種類のリソースの間には関係がありますか? 1-n、1-1 OR n-n? –
2つのモデルはInstituteとAdminです。インスティテュートと管理者の間には「多くの関係があります」という関連があります。 – user1175969