簡體   English   中英

帶有不幸的模型名稱的帶有accepts_nested_attributes_for的Rails嵌套表單

[英]Rails nested form with accepts_nested_attributes_for with an unfortunate model name

我有一個名為“ Controller”的父模型(成熟的應用程序,不是我的決定)

belongs_to :controller
accepts_nested_attributes_for :controller

形成:

= f.fields_for :controller do |c|
    = c.hidden_field :id, :value => @controller.id
    = c.text_field :slw_type

不會顯示。

= f.fields_for :literally_anything_else do |c|
    = c.hidden_field :id, :value => @controller.id
    = c.text_field :slw_type

如果將變量名更改為其他任何名稱,則將生成表單。 我預感這是Rails專用的保留名稱。

題:

有什么問題? 我該如何做呢?

解決了:

問題在於父模型尚未與子模型關聯。 我沒有提供所有必要信息的錯誤。

這工作了。

def new
    @controller = Controller.find(params[:controller_id])
    @inspection = Inspection.new(:controller => @controller)

因此,我的fields_for表單生成器也起作用。

選擇一些無害的變量名。 not_really_a_controller或其他。 將其用於變量和表單。 然后,在您的實際控制器(例如ActionController :: Base后代)中,重命名傳入的參數,以使模型不知道任何不同,例如:

before_filter :filter_params

private
 def filter_params
   if params[:not_really_a_controller]
     params[:controller] = params.delete(:not_really_a_controller)
   end
 end

過去,出於類似原因,我使用了此策略,盡管並非專門針對controller 值得一試!

暫無
暫無

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

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