助手"fields_for"不工作 [英] Helper "fields_for" not working
本文介绍了助手"fields_for"不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用的是嵌套属性,但是字段未加载到我的视图中. 有人知道我想念什么吗?
I'm using nested attributes, but the fields aren't loaded in my view. Someone know what I missing?
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(部分):
Result HTML (part):
<div class='field'></div>
<div class='buttonrow'>
<input name="commit" type="submit" value="Save" />
</div>
在上面,div.field
为空.
推荐答案
我偶然发现了您的 rails问题,它似乎不是在您的new
操作中构建嵌套资源.
I stumbled across this from your rails issue, which appears to be not building the nested resource in your new
action.
您要在控制器中呼叫build_material_asset
吗?那可以解释为什么没有渲染字段.如果嵌套对象是nil
,则没有对象可为其呈现字段.
Are you calling build_material_asset
in your controller? That could explain why the fields aren't getting rendered. If the nested object is nil
, there are no object to render fields for.
尝试这样的事情:
class MaterialsController < ApplicationController
def new
@material = Traditions::Material.new
@material.build_material_asset
end
end
这篇关于助手"fields_for"不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文