我有一个名为Imprintable的类,其中包含此
class Imprintable < ActiveRecord::Base
has_one :brand
# ...
我还有一个名为Style的类,其中包含以下内容:
class Style < ActiveRecord::Base
belongs_to :imprintable
# ...
我的Styles架构包含一个名为imprintable_id
的整数形式的可压缩表的外键
我正在尝试在视图中显示名为catalog_no
的样式表中的属性,以编辑有关可压印的信息。我知道我的错误是因为样式不存在作为imprintable表的成员,但我不确定如何从样式表中的相应条目访问catalog_no
的名称。 HTML是这样的:
<!-- language: HTML -->
<div class="box-info">
<%= render partial: 'shared/modal_errors', locals: {object: imprintable} %>
<%= form_for(imprintable) do |f| %>
<div id="horizontal-form" class="collapse in">
<!-- Lots of HTML.. -->
<div class="form-group">
<%= f.label :style.catalog_no, class: 'col-sm-2 control-label' %>
<div class="col-sm-10">
<%= f.text_field :style.catalog_no, class: 'form-control' %>
<!-- Problem is on the above line!! -->
<p class="help-block">The catalog number of the imprintable
</div>
</div>
</div>
<% end %>
</div>
谢谢你的时间!
答案 0 :(得分:1)
您应该使用嵌套表单
Model Imprintable看起来像这样:
class Imprintable < ActiveRecord::Base
has_one :brand
accepts_nested_attributes_for :style
end
在控制器编辑操作中
def edit
@imprintable = Imprintable.find(params[:id])
end
在视图文件中edit.html.erb
看起来像
<div class="box-info">
<%= render partial: 'shared/modal_errors', locals: {object: imprintable} %>
<%= form_for(@imprintable) do |f| %>
<div id="horizontal-form" class="collapse in">
<%= f.fields_for :style do |d| %>
<div class="form-group">
<%= d.label :catalog_no, class: 'col-sm-2 control-label' %>
<div class="col-sm-10">
<%= d.text_field :catalog_no, class: 'form-control' %>
<p class="help-block">The catalog number of the imprintable
</div>
</div>
<% end %>
</div>
<% end %>
</div>
如果你正在使用rails 4,请不要忘记将style_attibutes
添加到impritable_params
方法
private
def impritable_params
## params.require(:your_model).permit(:fields_of_model, association_model_attributes: [:fields_of_association_models])
params.require(:imprintable).permit(style_attributes: [:id, :catalog_no])
end
end