我在belongs_to
和map
之间有row
关系。一个map
has_many rows
。
出于某种原因,当我尝试编辑一行时,即使它在我的数据库中填充,当我尝试编辑此行时它也没有显示值。为什么会这样?下面是_form.html.erb
和edit.html.erb
文件。
<%= render 'form', row: @row %>
<%= form_for [@map, @map.rows.build], method: :post, url: map_rows_path do |form| %>
<div class="field">
<%= form.label :timeframe %>
<%= form.text_field :timeframe, id: :timeframe %>
</div>
<div class="field">
<%= form.label :standards %>
<%= form.text_field :standards %>
</div>
<div class="field">
<%= form.label :content %>
<%= form.text_field :content %>
</div>
<div class="field">
<%= form.label :skills %>
<%= form.text_field :skills %>
</div>
<div class="field">
<%= form.label :resources %>
<%= form.text_field :resources %>
</div>
<div class="actions">
<%= form.submit %>
</div>
<% end %>
如果我在rails控制台中尝试使用Row.last
,则会确认此行填充了数据。我假设这与表单的设置方式有关,但我不熟悉这些关系。怎么解决这个问题?
看来你正在将行传递到<%= render 'form', row: @row %>
的形式,但在实际编辑形式中你使用变量@map并通过说@map.rows.build
构建一个空行对象,因此行对象将是一个没有任何值的新对象。
根据您的代码将其更改为以下内容并查看。 (我假设您在控制器的编辑操作中设置了@map对象)
<%= form_for [@map, row], method: :post, url: map_rows_path do |form| %>