2017-03-08 4 views
1

私は繭の宝石にあるチュートリアルで行くつもりです。 Toiletを作成しようとすると、トイレが最初に作成されない限り、追加している施設は保存されません。私はそれがそのまま一緒に作られていたはずだと思っていました。トイレを作るときに施設を救う方法はありますか?繭の宝石を使用して入れ子になったフォームを追加する。トイレが最初に作られない限り、施設は保存されません。

は物事が混乱しないようにするに

class Toilet < ApplicationRecord 
has_many :facilities 
    accepts_nested_attributes_for :facilities, reject_if: :all_blank, allow_destroy: true 
end 

class Facility < ApplicationRecord 
    belongs_to :toilet 
end 

トイレコントローラ

def new 
@toilet = Toilet.new 
end 

def create 
@toilet = Toilet.new(toilet_params) 
if @toilet.save 
    redirect_to @toilet 
else 
    render :new 
end 
end 

private 
def toilet_params 
    params.require(:toilet).permit(:name, :location, facilities_attributes: [:id, :name, :_destroy]) 
end 

_form.html.erb

<%= f.simple_fields_for :facilities do |facility| %> 
<%= render 'facility_fields', :f => facility %> 
<% end %> 
<div class='links'> 
<%= link_to_add_association 'add facility', f, :facilities %> 
</div> 
<%= f.submit 'Save' %> 
<% end %> 

_facility_fields.html.erb

<div class='nested-fields'> 
<%= f.inputs do %> 
    <%= f.input :name %> 
    <%= link_to_remove_association "remove facility", f %> 
<% end %> 
</div> 
+0

ショートバージョン、はいあなたは同時に両方を保存することができます...ロングバージョン:総称的に、あなたは間違いなく、その後、動的に、これまでの記録をコミットする前にフィールドを追加し、新しいアクションを起動することができます - そして、親の両方を保存します&ネストされたフィールド/モデルは、初めて、同時に。 – Mirv

答えて

0

ウェズリーはい、あなたは同時に親の両方を保存することができます&は同時に。ロングバージョン:はい、新しいレコードを作成して保存する前に、ネストされたコンテンツを最初に動的に追加することもできます。両方を同時に保存します。

あなたの問題はおそらく_facility_fields.html.erbにあると思います... <% f.inputs do %>が見えているか、設定が間違っています。 renderコマンドをラップするdoループが既にあるので、この別のdoループは必要ありません。つまり、/divのすぐ上のテンプレートからend個のものを削除したいということも意味します。

_facility_fields.html.erb 

<div class='nested-fields'> 
<%= f.inputs do %>    // Issue is this line 
    <%= f.input :name %> 
    <%= link_to_remove_association "remove facility", f %> 
<% end %>      // Remove this too afterwards 
</div> 
+1

これは私の間違いでした。私はこの[ここ](https://www.google.com)の簡単な解決策を見つけました。 Facilityモデルでは、 'belongs_to:toilet、optional:true'を追加します。それはRails 5関連です。 – Wesly

+0

あなたのリンクはGoogleに行きますが、特定の検索やページではありませんが、すばらしいスルーショニングがあります。レール5で楽しかったですが、オプションのブール値をまだ使用していません:) – Mirv

関連する問題