2016-10-28 5 views
0

人のための通常の形式は、このRails:フォームのオブジェクトを動的に設定するには?

<%= form_for @person do |f|%> 
    <%= name... %> 
    <%= age...%> 
    <%= submit...%> 
<% end %> 

ようになるには、今私は、動的にフォームのオブジェクトを設定し、ドロップダウンリストから選択し、これを達成するためにどのように

<%= select_tag "team", 
    options_from_collection_for_select(@team, 
    "id","person_name") %> 


<%= form_for @person_choose_from_above do |f|%> 
    <%= name... %> 
    <%= age...%> 
    <%= submit...%> 
<% end %> 

ようにしたいですか?前もって感謝します。

+0

選択がビューで行われますので、フォームの属性を変更するためにそのためのJSを使用する必要があります。 –

+0

フォームの振る舞いに依存します。チームのさまざまなオプションを選択するときにフィールドを動的に更新しますか?それから、js/ajaxを使ってそれらを更新するのがおそらく最善の策です。たぶんあなたはフォームにselectを置いて、コントローラー内のすべてを扱うことができます。それは非常に動的ではありませんか?場合によります... – niels

答えて

0

あなたは上の列挙型を作成し、この

のように使用することができ、あなたのアクティブ

class ClassName < ActiveRecord::Base 
enum team: [:hot, :medium, :cold]; 

は、その後、私はこのようにそれを行うだろうこの

<%= f.label :team %> 
<%= f.select :team, ClassName.team.keys %> 
0

のようなあなたのビューでこれを使用しrecored:上team selectは、選択したオプションのパラメータを渡してページをリロードし、次にその人のオブジェクトを再初期化します。

再生回数:

<%= form_tag("/url", method: "get") do %> 
    <%= select_tag "team", 
    options_from_collection_for_select(@team, 
    "id","person_name"), name: 'team' %> 
    <%= submit_tag("Search"), class: 'fake-submit', style: 'display: none;' %> 
<% end %> 
<% person = params[:team].present? ? Person.find(params[:team]) : Person.new %> 

<%= form_for (person) do |f|%> 
    <%= name... %> 
    <%= age...%> 
    <%= submit...%> 
<% end %> 

Javascriptを:

$('select').on 'change', -> 
$('.fake-submit').click() 
関連する問題