はhas_one :register
、Registers
はbelong_to :wine
の2つのモデルがあります。 registers_controller.rb
は、rails generate scaffold
によって作成された簡単です。simple_fields_forはどのように関連するモデルで使用しますか?
wine
オブジェクトと同時にオブジェクトregister
を作成し、それらが正しくリンクされていることを確認します。したがって私は同じ形でこれをやろうとしています。
私はsimple_form_for
とsimple_fields_for
を使用していますが、後者は実行されていますが、register
というインスタンスが存在しないため、フォームには完了フィールドが含まれていません。
:私は(def create
に)を含むdef create
とdef new
方法内の様々な異なるコードを試みたwines\_form.html.erb
<%= simple_form_for @wine do |f| %>
<div class="field">
<%= f.label :name %>
<%= f.text_field :name %>
</div>
<% f.simple_fields_for :register do |r| %>
<%= r.label :short_name %>
<%= r.input :short_name %>
<% end %>
</div>
からwines_controller.rb
def new
@wine = Wine.new
@wine.register = Register.new
end
def create
@wine = Wine.new(wine_params)
@wine.register.build
# error checking code
end
def wine_params
params.require(:wine).permit(:name, :cuvee, register_attributes: [:id, :short_name])
から
@wine.register.build = Register.new(register_params)
および@wine.register.build
をdef new
。
私は間違っていますか?明らかに、1つのオブジェクトを作成する必要があるときは、simple_fields_for
が入力領域を生成するために、2番目のインスタンスをインスタンス化する必要があります。
をその私のために働いた。だから私が間違っていない限り、構文は です。linked_object = primary_object.method_linkedオブジェクト ありがとうございました。 – fatherdamo
ようこそ。うん、そう、「1対多」関係の場合には複数形にすることを忘れないでください!また、質問に答えてマークすることを忘れないでください;) – Viro