Rails没有传递嵌套属性?

时间:2014-06-18 12:49:29

标签: ruby-on-rails ruby-on-rails-4

我正在尝试为我的Miniatures模型创建克隆链接。我希望它能够复制当前模型并使用当前模型的信息渲染一个新表格,以便稍微调整然后保存。

我与:

联系
<%= link_to 'clone', clone_miniature_path(@miniature) %>

我的miniatures_controller中有以下操作:

    def clone
        @miniature = Miniature.find(params[:id]) # find original object
        @miniature = Miniature.new(@miniature.attributes) # initialize duplicate (not saved)
        @all_manufacturers = Manufacturer.all
        @production = @miniature.productions.build
        render :new # render same view as "new", but with @miniature attributes already filled in
    end

更新:我现在已经定义了@production,并且它在渲染过程中不再崩溃,但它只填充带有@miniature模型信息的表单并保留@production drop - 空白。我可能需要添加一些东西:

@miniature = Miniature.new(@miniature.attributes)

也许?奇怪,因为miniature_params肯定包括productions_attributes:需要填写下拉列表。在编辑视图中正常工作。

我的新方法是

def new
    @miniature = Miniature.new 
    @all_manufacturers = Manufacturer.all
    @production = @miniature.productions.build
end

我的编辑方法几乎相同,但很明显有一个查找。

1 个答案:

答案 0 :(得分:0)

不确定您的型号,但如果Miniature具有生产关系,您应该具有以下内容:

<%= f.fields_for(@miniature.production) do |pf|%>

您正在引用未在控制器中定义的@production。也许像是

def clone
    @miniature = Miniature.find(params[:id]) # find original object
    @miniature = Miniature.new(@miniature.attributes) # initialize duplicate (not saved)
    @production = @minitature.production
    render :new # render same view as "new", but with @miniature attributes already filled in
end

可以提供帮助。

同样,不确定“生产”和“缩影”之间的关系。