我將一個集合傳遞給一個部分:
<%= render partial: "discount_rule", collection: @programs.discount_rules, locals: { f: form } %>
區域變數f成功傳遞給區域變數。
我在部分列印出我可用的區域變數:
<%= pp local_variables %>
我得到的結果是:
[:local_assigns, :output_buffer, :discount_rule, :discount_rule_counter, :discount_rule_iteration, :f]
我將添加一個除錯器:
<% debugger %>
在discount_rule終端中輸入并獲取具有欄位的正確物件name。
我將除錯器替換為:
<%= discount_rule.name %>
所以它與除錯器在同一范圍內。我得到:
undefined local variable or method `discount_rule' for #<ActionView::Base:0x000000000078c8>
沒有語法錯誤。我也曾嘗試discount_rule_counter和discount_rule_iteration并重新命名從集合變數名(如使用:變數名),并獲得未知的本地變數或方法的錯誤。我試過不使用集合,而只是呈現部分并在每個回圈中傳遞變數。同樣的錯誤。我究竟做錯了什么?
這是一個只有 Rails API 的應用程式,我必須稍微改變一下才能有一個頁面。
uj5u.com熱心網友回復:
您應該使用local_assigns[:discount_rule]來訪問區域變數。
也可以使用collection: @programs.discount_rules, as: :discount_rule并呼叫discount_rule視圖。
同時確保控制器中的資料不為零,并且在將其傳遞給部分之前,您可以列印所需的屬性,例如名稱 .each do |instance| p.name
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/380709.html
標籤:红宝石轨道 红宝石 erb ruby-on-rails-6.1
