私には以下のものがあります。シリアライズされたハッシュフィールドとシンプルフォーム
class Page < ActiveRecord::Base
belongs_to :category
serialize :fields
end
fields
の値はカテゴリによって異なります。しかし例として。
{"address" => "8 finance street, hong kong",
"founded" => "1973"}
この例では、カテゴリは、カスタムフィールドとして"address"
と"founded"
を定義しています。
私が言いたいのは、
= simple_form_for(@page) do |f|
= f.association :category
- f.object.category.fields.each do |field|
= f.input field.name
しかし、私は@page.founded
は、代わりに私が@page.fields["founded"]
されているはずです有効な
ではないという事実に対処するための魔法の何かをする必要があります。
提案がありますか?
更新:
私は
- if f.object.category
- f.object.category.fields.each do |field|
= f.input field.name do
= text_field_tag "post[fields][#{field.name}]", f.object.fields[file.name]
寄りに少し持っている今(オブジェクトの名前を指定する必要はありません)このドライヤーを行う必要があります。
私はこのためのまともなシンプルなフォーム拡張を書くことができるかどうかを見ていきます。
+1です。私はOpenStructビットを追加するまで、値を正しく取得していなかった理由を解明するために、私の脳を何時間も破壊しました。 – gk0r
これは素晴らしいです。強力なパラメーターユーザーのための追加の注記:明示的に追加する各フィールドを定義する必要があります。たとえば、 'params.require(:page).permit(:fields => [:address、:found])' –
Thxはソリューションのために、それは完璧に動作します。エラーを '@ page.fields'に返します。 –