1

私はRailsを初めて使用し、これを行うためのより良い方法を見つけようとしています.YAMLファイルから読み取るRakeタスクを使用して、シードデータをデータベースにロードしました.

テンプレート.YAML:

- file_name:        Template1
  description:      temp1
  required_fields:  address

- file_name:        Template2
  description:      temp2 
  required_fields:  user_id,user_name

- file_name:        Template3
  description:      temp3
  required_fields:  user_id,address

私の見解では、ユーザーがロードするテンプレートを選択できるドロップダウンがあり、選択したテンプレートに応じて、テンプレートを実行するために必要なフィールドを取得するためにテキスト ボックスを表示する必要があります。

Template.html.slim:

dt
 label for="template_name" Select The Template To Run
dd
 = select_tag :template_name,options_for_select(@template_seed_data_array.insert(0, "Please select the template")), :onchange => "Template.toggleRequiredFields(); return false"

#user_id style="display:none"
 dt
  label for="user_id" Enter User Id
 dd
   = text_field_tag :user_id, @template_library[:user_id]

#user_name style="display:none"
 dt
  label for="user_name" Enter user name
 dd
  = text_field_tag :user_name, @template_library[:user_name]
 .
 .
 .

私の coffescript では、ユーザーが何を選択しているかに応じて、これらのテキスト ボックスを表示または非表示にするために、多数の if/else を実行します。

Template.coffee:

toggleRequiredFields: ->
  Template = $('#template_name').val()
  if Template in ['Template3','Template2']
    $('#user_id').show();
    .
    .
  else 
    $('#user_id').hide();  
    .
    . 

時間が経つにつれて、テンプレートの数が増え、if/else ロジックが乱雑になります。ユーザーがテンプレートを選択したときに、この非表示/表示の切り替えを行うより良い方法はありますか?

4

1 に答える 1