所以我正在制作一个编辑页面,可以编辑动物和动物的所有者。有一个涉及的连接表,其中包含Animal所属的所有者。
更确切地说,说你有:
<% form_for :animal, url: animal_path(@edit_animal), method: :patch do |edit| %>
... animal labels and fields to edit go here ...
<%= edit.fields_for :owners do |owner| %>
<%= owner.label :name, "Name" %>
<%= owner.text_field :name %>
<%end%>
<%=edit.submit 'Submit'%>
<%end%>
模型关联:
AnimalOwner < ApplicationRecord
belongs_to :animal
belongs_to :owner
Owner < ApplicationRecord
has_many :animal_owners
has_many :animals, :through => :animal_owners
Animal < ApplicationRecord
has_many :animal_owners
has_many :owners, :through => :animal_owners
基本上,我不确定我是否正在为连接表正确地执行表单。我还希望能够使用:value显示当前保存在数据库中的数据,但是对于连接表我该怎么做呢?
<%= owner.text_field :name, :value => what_goes_here? %>
答案 0 :(得分:2)
如果您正在使用Rails方式,则不需要提及现有数据库数据的值。
<div class="one">One</div>
<div class="two">Two</div>
<div class="three">Three</div>
<div class="four">Four</div>
这应该将数据填充到上面给定的字段。另外,对于&#34; new&#34;和&#34;编辑&#34;方法。对于&#34;编辑&#34;你也可以使用&#34; PUT&#34;作为方法类型。
要使用<%= owner.text_field :name%>
代码,您还需要告知field_for
模型Animal
。这将允许嵌套的params被分配到accepts_nested_attributes_for :owners
实例。