簡體   English   中英

如何在rails中的form_builder中獲取關系值

[英]how to get a relationship value in form_builder in rails

我有一個產品和類別表。 類別has_many產品和產品belongs_to類別

當我在控制台沙箱中工作時,我可以通過以下方式輕松獲得產品所屬的類別:

@p = Product.find(29)
@p.category

但是,在產品的編輯頁面中,我無法獲得它所屬的類別。

<% form_for :product, @products do |p| %>
   <%= p.error_messages %>
   <td><%=label "category", "Category"%></td>
   <td><%=p.select :category_id, options_for_select(
          @categories.map {|s| [s.name, s.id]}, 
          ["#{p.category.id}"])%></td>

所以基本上我正在嘗試為包含所有類別的下拉列表的產品編輯頁面,但我希望預先選擇當前類別。

我得到的錯誤是:

undefined method `category' for #<ActionView::Helpers::FormBuilder:0xbb35f64>

p包含表單生成器對象,而不是模型實例。 要訪問模型實例,請執行以下操作:

... ["#{p.object.category.id}"])%></td>

注意“對象”。

說明: form_for的塊范圍內的p 不是您的產品,因此它不是 #<Product>類型。 相反,它是#<ActionView::Helpers::FormBuilder:0xbb35f64>因為錯誤消息告訴您。 因此,它對您的模型的屬性一無所知。 FormBuilder將表單對象保存在其object方法中。

FormBuilder擁有其他可能有用的很酷的工具。 我建議做一個<%= debug p %>來了解更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM