我有希望成为一个简单的问题。我需要在Edit页面上显示属性的值,同时保持相同属性的输入字段。怎么可以实现呢?
答案 0 :(得分:2)
通常你可以使用原始对象,就像你将在@foo
语句中使用form_for
一样,所以你可以直接使用它:{{1 }}
如果您在部分或其他只有表单构建器实例的区域内,则可以使用= @foo.the_attribute
方法引用基础对象,例如:
.object
答案 1 :(得分:1)
就我而言,我在两个模型中使用accepts_nested_attributes_for
。 Event
接受来自Speaker
的嵌套对象。 Speaker
有一个perfil_id
属性,可以是 [' Maker',' Developer',' Entrepreneur',.. ] 强>
Speaker
的表单是从主要表单Event
的形式部分呈现的:
<%= form_for(event) do |f| %>
<%= f.text_field :title %>
<%= f.label :title, 'Event name' %>
<%= f.fields_for :speakers do |builder| %>
<%= render 'events/partials/speaker_fields', f: builder %>
<% end %>
<%= f.submit %>
<% end %>
<强> 部分 强>
<%= builder.number_field :name %>
<%= builder.label :name %>
<% options = options_from_collection_for_select(@profiles, 'id', 'name', f.object.member_profile_id ) %>
<%= select_tag "event[speakers_attributes][profile_id]", options, prompt: 'Select a Profile' %>
当 正在编辑 事件的发言人时,我想要select_tag
选择实际发言人的个人资料名称。
我无法使用 输入字段 。所以我需要从构建器对象中获取正确的值,并通过这样做得到我需要的东西:
f.object.profile_id
将它作为第四个参数传递给select options
我得到了这个工作:
<% options = options_from_collection_for_select(@profiles, 'id', 'name', f.object.profile_id ) %>
我希望它对你也有用!