ruby-on-rails – 帮助者“fields_for”无效
发布时间:2020-12-16 21:25:33 所属栏目:百科 来源:网络整理
导读:我正在使用嵌套属性,但我的视图中没有加载字段. 有人知道我错过了什么吗? Rails 3.1,Ruby 1.9.2 型号1: class Traditions::Material ActiveRecord::Base has_one :material_asset,:dependent = :destroy validates_presence_of :title accepts_nested_attr
我正在使用嵌套属性,但我的视图中没有加载字段.
有人知道我错过了什么吗? Rails 3.1,Ruby 1.9.2 型号1: class Traditions::Material < ActiveRecord::Base has_one :material_asset,:dependent => :destroy validates_presence_of :title accepts_nested_attributes_for :material_asset end 型号2: class Traditions::MaterialAsset < ActiveRecord::Base belongs_to :material has_attached_file :asset validates_attachment_presence :asset end 查看(HAML): = form_for @material,:html => {:class => 'form',:multipart => true} do |f| = errors_for @material .field = f.label :title = f.text_field :title .field = f.label :description = f.text_area :description,:rows => 5 .field = f.fields_for :material_asset do |ma| = ma.label :asset = ma.file_field :asset .buttonrow = f.submit 'Save' 结果HTML(部分): <div class='field'></div> <div class='buttonrow'> <input name="commit" type="submit" value="Save" /> </div> 在上面,div.field是空的. 解决方法
我偶然发现了你的
rails issue,这似乎没有在你的新动作中构建嵌套资源.
你在控制器中调用build_material_asset吗?这可以解释为什么字段没有被渲染.如果嵌套对象为nil,则没有对象呈现字段. 尝试这样的事情: class MaterialsController < ApplicationController def new @material = Traditions::Material.new @material.build_material_asset end end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |