我是RoR的新手,這讓我瘋狂。未保存的Rails嵌套屬性
我想使用嵌套屬性將記錄放在兩張桌子上,只使用一種形式。這在教程中看起來很簡單,但我做錯了一些事情,無法弄清楚。 我檢查了其他線程與類似的問題,沒有運氣。
也許你們可以幫助我。
這裏是我的兩個型號
class Encuesta < ActiveRecord::Base
has_one :encuestas_titulos_idioma, :dependent=>:destroy
accepts_nested_attributes_for :encuestas_titulos_idioma
end
class EncuestasTitulosIdioma < ActiveRecord::Base
belongs_to :encuestas
end
IHAVE還爲嵌套屬性的許可證。
def encuesta_params
params.require(:encuesta).permit(:estado, :servicio_asociado, encuestas_titulos_idiomas_attributes: [ :titulo, :descripcion, :encuesta_id ])
end
這裏是形式
<%= form_for(@encuesta) do |f| %>
<% if @encuesta.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@encuesta.errors.count, "error") %> prohibited this encuesta from being saved:</h2>
<ul>
<% @encuesta.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :estado %><br>
<%= f.text_field :estado %>
</div>
<div class="row">
<%= f.fields_for :encuestas_titulos_idiomas do |ff| %>
<div class="medium-12 columns">
<%= ff.label :titulo %>
<%= ff.text_field :titulo %>
</div>
<div class="medium-12 columns">
<%= ff.label :descripcion %>
<%= ff.text_area :descripcion, rows: 4 %>
</div>
<% end %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
任何想法有什麼不好? 非常感謝。
編輯。修正:
我發現問題(和解決方案)。 這是爲了萬一它可以幫助某人。
在控制器新行動,對於HAS_ONE協會,我們應該使用
def new
@encuesta = Encuesta.new
@encuesta.build_encuestas_titulos_idioma
end
不
@encuesta.encuestas_titulos_idioma.build
我們使用has_many關聯。
您收到了錯誤?如果所有數據都被髮送,你可以檢查控制檯嗎? – psantos
感謝您的回覆。我得到了不允許的參數:encuestas_titulos_idiomas 然後,我將名稱更改爲單數(以匹配accepts_nested_attributes_for參數),但錯誤仍然存在。看起來像一個命名約定的錯誤,但找不到它。 – Sonia
變化'accepts_nested_attributes_for:encuestas_titulos_idioma'到'accepts_nested_attributes_for:encuestas_titulos_idiomas' 而我的建議是:總是使用英文名字。 – psantos