在我的應用程序,我有一個頁面,我想管理員用戶可以更新我的「套餐」模式,它同時屬於「訂單」模式和特定的特性「項目「模型。這是一個有點複雜,但我基本上要在一個表中呈現所有屬於給定項目,以一種特殊的方式訂購的軟件包(這就是我下面的packages_for_log方法一樣),用兩個空白用於更新物品的重量。理想情況下,所有更新應立即提交,並在頁面底部提供一個提交按鈕。我已經嘗試了一大堆的解決方案,而我目前的一個下面的,但是當我訪問該網頁在我的服務器上給出了這樣的錯誤:嵌套形式現有對象
undefined method `actual_lbs' for #<ActionView::Helpers::FormBuilder:0x007ff67df6c9c8>
錯誤的混亂給我,因爲我希望我是在包實例上調用該方法,而不是幫助程序。有點困惑。無論如何,我的代碼如下。該視圖的相關部分:在package.rb模型文件的
<% 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 %>
相關章節:
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
我加資源:包我的路線文件。
任何想法我做錯了什麼?對我來說重要的是我循環創建一個基於「p」的表格,然後編輯同一個「p」對象。只是不知道該怎麼做。相當新的Rails。
謝謝!所以我嘗試了編輯,但我不確定現在要放在控制器中。由於我提交項目,我該怎麼辦「如果@ item.save」等,並將該自動嵌套包保存?控制器如何知道「p」變量來進行true_weight計算?再次感謝! – Sasha
薩沙,你應該有訪問嵌套形式的信息。所有你需要做的就是把計算出如何將信息在params哈希表發送...大概就像PARAMS [:爲了] [:actual_lbs] ..退房http://guides.rubyonrails.org/debugging_rails_applications.html(2.3節)......還有,一旦你知道了PARAMS你只是做使用變量在PARAMS計算,然後分配在保存之前item.true_weight項目 – Abram