如何访问部分嵌套导轨形式的属性?

问题描述:

我想使用我的inner_object中的boolean属性is_white在部分_inner_object_form_fields中的html代码之间切换。这是我的尝试。如何访问部分嵌套导轨形式的属性?

<%= form_for @outer_object do |f| %> 
    <%= f.fields_for :inner_object do |builder| %> 
    <%= render :partial => "inner_object_form_fields", :locals => { :f => builder } %> 
    <% end %> 
<% end %> 

这是我的部分_inner_object_form_fields的尝试

<% if f.is_white == true %> 
    <%= f.label(:name, "White") %> 
<% else %> 
    <%= f.label(:name, "Black") %> 
<% end %> 

这是InnerObjects的迁移文件。

class InnerObjects < ActiveRecord::Migration 
    def self.up 
    create_table :inner_objects do |t| 
     t.string "name" 
     t.boolean "is_white", :default => true 
     t.timestamps 
    end 
    end 
    def self.down 
    drop_table :inner_objects 
    end 
end 

我发现了一个similar question,但无法为我检索答案。 现在的问题是:如何访问attribut is_white?我的例子不起作用。

尝试

<% if f.object.is_white == true %> 

似乎记得,你可以访问对象这种方式(不是100%,但肯定;)

+0

''也行。谢谢! – JJD 2011-03-18 23:10:49

这是因为f.is_white是基于部分空白对象吗?尝试

<%= form_for @outer_object do |f| %> 
<%= f.fields_for f.inner_object do |builder| %> 
    <%= render :partial => "inner_object_form_fields", :locals => { :f => builder } %> 
<% end %> 
<% end %> 

这样它就会引用附加的对象和你创建的任何状态。

+1

对不起安东尼。这对我不起作用。我编辑我的帖子清除。 – JJD 2011-03-18 21:05:07

即使一步是做这样的事情:

<%= f.fields_for f.inner_object do |builder| %> 
    <%= render :partial => "inner_object_form_fields", :locals => { :f => builder, :inner_object => builder.object } %> 
<% end %> 

然后你可以做。

<% if inner_object.is_white == true %> 

这样你的部分代码看起来更清洁一些。