在我的应用程序中,我有一个页面,我希望管理员用户能够更新我的“包”模型的特定特征,该模型属于“订单”模型和“项目”模型。这有点复杂,但我基本上想在一个表格中显示属于给定项目的所有包,以特定方式排序(这就是我下面的 packages_for_log 方法所做的),两个空格用于更新项目的重量。理想情况下,所有更新都应该一次提交,页面底部有一个提交按钮。我尝试了一大堆解决方案,我当前的解决方案如下,但是当我访问服务器中的页面时出现此错误:
undefined method `actual_lbs' for #<ActionView::Helpers::FormBuilder:0x007ff67df6c9c8>
该错误让我感到困惑,因为我希望我在包实例上调用该方法,而不是助手。有点糊涂。无论如何,我的代码如下。视图的相关部分:
<% form_for(@item) do |a| %>
<% @item.packages_for_log.each do |p| %>
<%= a.fields_for p do |i| %>
<tr>
<td><%= p.order.name %></td>
<td><%= p.order.processed_notes %></td>
<% if p.order.user %>
<td><%= "#{p.order.user.name.first(3).upcase}-#{p.id}" %></td>
<% else %>
<td><%= p.order.id %></td>
<% end %>
<td>
<%= i.text_field :actual_lbs %>
</td>
<td>
<%= i.text_field :actual_oz %>
</td>
<%= i.hidden_field :true_weight, value: (i.actual_lbs + i.actual_oz/16) %>
</tr>
<% end %>
<% end %>
<% end %>
package.rb 模型文件的相关部分:
attr_accessible :order_id, :price, :true_weight, :actual_lbs, :actual_oz
attr_accessor :actual_lbs, :actual_oz # These two are virtual attributes for the above calc
我将资源 :packages 添加到我的路由文件中。
知道我做错了什么吗?对我来说重要的是我循环创建一个基于“p”的表,然后编辑同一个“p”对象。只是不知道该怎么做。Rails 的新手。