2016-08-31 1 views
1

私はレールアプリを構築しています。レールフォームのドロップダウンオプションをそのフォームの変数を使用して保存する

同じオプションのドロップダウンフィールドには、さまざまな形式があります。オプションを別の場所に保存し、各フォームのオプションを入力するのではなく、ドロップダウンフィールドで変数を使用したいと思います。

あなたは配列を渡すことを可能にするか、オプションフィールドを作成するためにハッシュselectレールのヘルパーメソッドを小さなコードコードスニペットで私を助けたり、コードベース

+0

クラスやモジュールを定数などで作成して、システムで必要なときにいつでもこの配列からオプションを生成することができます。 – lcguida

+0

ここに、レールでの建築用フォームの参考資料があります:http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html http://guides.rubyonrails.org/form_helpers.html – inveterateliterate

答えて

0

に私を指すください。

selectを使用すると、アプリケーションの関連部分で使用できるオブジェクトにデータを定義する必要があります。これを行う1つの方法は、モジュールを使用することです。例:

module DropDownOptions 
    def number_options 
    {"One" => 1, "Two" => 2, "Three" => 3} 
    end 

    def foo_options 
    {"Foo" => "Bar"} 
    end 
end 

次に、そのコードをアプリケーションフォルダに配置する必要があります。私はapp/tools/drop_down_options.rbにそれを置いていました。

module ApplicationHelper 
    include DropDownOptions 
end 

をそして、それはあなたがビューでこれを行うことができます::

次に、あなたのヘルパーに追加することができ、あなたが戻って変換するためにハッシュを使用する必要がある場合

<%= select("post", "number_id", number_options) %> 

お使いのモデルの他の方法で、あなたもそこに含めることができます。

class Post << ActiveRecord::Base 
    include DropDownOptions 
end 

そしてnumber_options私をポストインスタンス内で利用可能になります。これを可能にする:

class Post << ActiveRecord::Base 
    include DropDownOptions 

    def number_label 
    number_options.invert[number_id] if number_id? 
    end 
end 

オプションをモジュールに入れることで、必要なときにいつでも使用できます。たとえば、ヘルパーメソッドの代わりにプレゼンターやデコレータを使用する場合は、そのオブジェクトにモジュールを含めます。

関連する問題