5

rails4で1対多接続を作ってみました。ただし、エラーにはなりませんが、ネストされた属性は保存されません。

私は何を間違っていますか?

ステーションモデル

class Station < ActiveRecord::Base
    has_many :adresses

    accepts_nested_attributes_for :adresses
end

アドレス-モデル

    class Adress < ActiveRecord::Base
        belongs_to :station
    end

Station-Controller クラス StationsController < ApplicationController

    def new
        @station = Station.new
        @station.adresses.build
    end

    def create
        @station = Station.new(station_params)
        @station.save
        redirect_to @station
    end

    def index
        @stations = Station.all
    end

private

    def station_params
        params.require(:station).permit(:name, adresses_attributes: [ :url ])
    end

end

ステーション: new.html.erb

<%= form_for :station, url: stations_path do |station| %>
    <p>
        <%= station.label :name %><br />
        <%= station.text_field :name %>
    </p>
    <%= station.fields_for :adresses do |adress| %>
        <div class="field">
            <p>
                <%= adress.label :url %><br />
                <%= adress.text_field :url %>
            </p>
        </div>
    <% end %>
    <p>
        <%= station.submit %>
    </p>
<% end %>

[編集]
この問題の最小限の例を作成し、ステップバイステップの手順としてここに文書化しました: https://groups.google.com/forum/#!topic/rubyonrails-talk/4RF_CFChua0

4

3 に答える 3

11

idRails 4 では、属性 forも許可する必要がありますadresses。これを行ってください:

def station_params
    params.require(:station).permit(:name, adresses_attributes: [ :url, :id ])
end

私はまだこれの公式ドキュメントを見つけようとしています:(

于 2013-07-09T23:45:42.767 に答える
3

form_for @stationの代わりに使用する必要がform_for :stationあります (シンボルの代わりにインスタンスを使用します)。

乾杯

于 2013-07-15T07:46:36.857 に答える