2016-02-04 80 views

回答

2

那麼通常你可以使用原來的對象,就像你有,你會在你的form_for聲明中已經使用了@foo,所以你可以使用直接:= @foo.the_attribute

如果你是內部分,或其他地方,你必須只表單生成器實例,那麼你可以參考下面的物體與.object方法,如:

= form_for @foo do |f| 
    # in here, f.object == @foo 
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噸o選擇實際揚聲器的配置文件名稱。

我無法使用輸入字段爲此。所以,我需要從生成器對象得到正確的價值觀和我得到了什麼,我需要做的:

f.object.profile_id

將它作爲第四個參數去了select options我得到這個工作:

<% options = options_from_collection_for_select(@profiles, 'id', 'name', f.object.profile_id) %>

我希望它對您也有用!

相關問題