如何访问部分嵌套导轨形式的属性?
问题描述:
我想使用我的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%,但肯定;)
答
这是因为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 %>
这样你的部分代码看起来更清洁一些。
''也行。谢谢! – JJD 2011-03-18 23:10:49