从Rails表单构建器获取数据属性值,而不使用输入字段

时间:2016-02-04 22:19:19

标签: ruby-on-rails

我有希望成为一个简单的问题。我需要在Edit页面上显示属性的值,同时保持相同属性的输入字段。怎么可以实现呢?

2 个答案:

答案 0 :(得分:2)

通常你可以使用原始对象,就像你将在@foo语句中使用form_for一样,所以你可以直接使用它:{{1 }}

如果您在部分或其他只有表单构建器实例的区域内,则可以使用= @foo.the_attribute方法引用基础对象,例如:

.object

答案 1 :(得分:1)

就我而言,我在两个模型中使用accepts_nested_attributes_forEvent接受来自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 ) %>

我希望它对你也有用!