嵌套路由值未填充编辑Rails

问题描述 投票:0回答:1

我在belongs_tomap之间有row关系。一个map has_many rows

出于某种原因,当我尝试编辑一行时,即使它在我的数据库中填充,当我尝试编辑此行时它也没有显示值。为什么会这样?下面是_form.html.erbedit.html.erb文件。

Edit.html.erb

<%= render 'form', row: @row %>

_form.html.erb

<%= 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,则会确认此行填充了数据。我假设这与表单的设置方式有关,但我不熟悉这些关系。怎么解决这个问题?

ruby-on-rails
1个回答
0
投票

看来你正在将行传递到<%= render 'form', row: @row %>的形式,但在实际编辑形式中你使用变量@map并通过说@map.rows.build构建一个空行对象,因此行对象将是一个没有任何值的新对象。

根据您的代码将其更改为以下内容并查看。 (我假设您在控制器的编辑操作中设置了@map对象)

<%= form_for [@map, row], method: :post, url: map_rows_path do |form| %>
© www.soinside.com 2019 - 2024. All rights reserved.