我有一个名为“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
如果将变量名称更改为其他任何名称,则构建表单。我有一个预感,它是一个特定于轨道的保留名称。
问题:
有什么问题?我怎样才能做到这一点?
问题是父模型还没有与子模型相关联。我错误地提供了所有必要的信息。
这很有用。
def new
@controller = Controller.find(params[:controller_id])
@inspection = Inspection.new(:controller => @controller)
因此,我的fields_for表单构建器也起作用。
答案 0 :(得分:1)
选择一些无害的变量名称。 not_really_a_controller
或其他什么。将其用于变量和表单。然后,在您的实际控制器(例如ActionController :: Base descendent)中,重命名传入的参数,以便模型不知道任何不同,如下所示:
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
。值得一试!