什么可能导致nested_form不输出正确的选择输入值?

时间:2015-04-18 00:18:50

标签: ruby-on-rails forms nested-forms

所以我在Rails 3.2.11中使用了nested_form(根据Gemfile.lock的v0.3.2)。我有一个带有类别字段的服务模型,该字段最初可以采用可通过选择下拉列表输入的多个值。

类别类似于:[“J Award”,“Z Award”,“Other”]

当我使用值J Award(或Z Award)保存表单字段并重新呈现可编辑表单时,表单会重新显示值为“其他”的类别。然而,如果我进入rails控制台并查看保存的服务模型的类别字段,它会显示“J Award”。

可能导致这种情况的原因是什么?由于不再维护nested_form,我是否应该以单一形式放弃和处理多个模型?

重新呈现的形式的haml输出

= semantic_nested_form_for @service, :url => "/update", :html => { :class => "service", :autocomplete => "off" } do |f|
  %h1.page-title Service
  .page-wrapper
    = render :partial => "shared/error_messages", :locals => { :object => @service }

重新呈现形式的html输出:

<li class="string input required stringish" id="service_category_input"><label class=" label" for="service_category">Category<abbr title="required">*</abbr></label><input id="service_category" maxlength="255" name="service[category]" type="text" value="J Award" />

        </li>

    = f.inputs do
      %h3 Project Information
      = f.input :billable, :as => :radio, :collection => { 'Billable' => true, 'Non-billable' => false }, :label => 'Category', :input_html => { :disabled => true }
      = f.input :category
      = f.input :assigned_consultant, :input_html => { :readonly => true }
      = f.input :aims, :input_html => { :readonly => true }

1 个答案:

答案 0 :(得分:1)

html.erb文件中,我将f.input更改为f.select

<%= f.select :category, ["J Award", "Z Award", "Other"], {selected: f.object.category} %>

selected属性不言自明。我之前从未使用过.haml个文件,所以我想你必须以某种方式转换它。