2012-03-08 11 views
0

私はFreebase経由で取得しているアイテムのハッシュを持っています。私はそれをレールform_forの中のモデルと同じように含める必要があります。ルビーのハッシュtoレール

すなわち(私はformtastic使用しています)、これはモデル...

<%= f.input :source, :as => :select, :collection => @subject.types, :member_label => :name, :member_value => :id, :input_html => { :class => 'combobox' } %> 

でもない、私のハッシュ上で動作します。

私の質問は、ヘルパーのためのレールform_forで外部ソースを使用する方法と、これが私が取るべきルートかどうかです。私はform_tagを使って別のルートを取って、単純なルビーハッシュを繰り返してもいいと思っていますが、おそらくレールメソッドを使う方がよりエレガントでメンテナンスできると思いますか?私はまた、IDだけのフリーベースデータを保存していません。

配列/ハッシュを簡素化:

[{:name=>"US President", :value=>"/m/02mjmr"}, {:name=>"Election campaign", :value=>"/m/047qllg"}, {:name=>"Event", :value=>"/m/057l6lw"}] 

または遊離塩基、検索結果の完全なハッシュ:あなたは簡単にようにこれを行うことができるはず

[{"mid"=>"/m/02mjmr", "name"=>"Barack Obama", "notable"=>{"name"=>"US President", "id"=>"/government/us_president"}, "lang"=>"en", "score"=>156.429855}, {"mid"=>"/m/047qllg", "name"=>"Barack Obama presidential campaign, 2008, General Election", "notable"=>{"name"=>"Election campaign", "id"=>"/government/election_campaign"}, "lang"=>"en", "score"=>58.741718}, {"mid"=>"/m/057l6lw", "name"=>"Barack Obama 2009 presidential inauguration", "notable"=>{"name"=>"Event", "id"=>"/event/event"}, "lang"=>"en", "score"=>57.407536}] 

答えて

2

<%= f.collection_select :freebase_id, options_from_collection_for_select(@freebase_hash, :value, :name, @object.freebase_id) 

@ object.freebase_idはoptions_from_collection_for_selectに渡され、どのオブジェクトがあればそれを指定することができますビューがロードされたときに発生します。これは、編集アクション、または検証エラー後にフォームを再表示するときの新しいアクションにとって重要です。

関連する問題