我有兩個型號,Wines
即has_one :register
和Registers
即belong_to :wine
。 registers_controller.rb
很簡單,由rails generate scaffold
生成。如何將simple_fields_for與關聯的模型一起使用?
我想創建一個register
對象與wine
對象同時並確保它們正確鏈接。因此,我試圖在相同的形式下做到這一點。
我使用的是simple_form_for
和simple_fields_for
,我相信後者正在執行,但沒有register
的實例,所以表單不包含完成的字段。
我認爲相關的代碼片段:
從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])
從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>
我已經內def create
和def new
方法,包括(在def create
)嘗試了各種不同的代碼@wine.register.build = Register.new(register_params)
和@wine.register.build
in def new
。
我在做什麼錯?顯然,當我需要創建一個對象時,需要實例化第二個對象以便simple_fields_for
生成輸入區域。
那爲我工作。所以,(除非我誤)語法是 linked_object = primary_object.method_linked object 感謝您的幫助。 – fatherdamo
不客氣!是的,沒錯,在「一對多」關係的情況下,不要忘記將它複數化!另外不要忘記標記問題的答案;) – Viro