我与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
,则确认此行已填充数据。我假设这与表单的设置方式有关,但我不熟悉这些关系。怎么解决这个问题?
答案 0 :(得分:0)
似乎你正在将行传递到<%= render 'form', row: @row %>
的形式,但在实际编辑表单中,您正在使用变量@map并通过说@map.rows.build
构建一个空行对象,因此行对象将是没有任何值的新对象。
根据您的代码将其更改为以下内容并查看。 (我假设您在控制器的编辑操作中设置了@map对象)
<%= form_for [@map, row], method: :post, url: map_rows_path do |form| %>