0

これが私の問題です。私のドメインが Factory と Workers の 2 つのモデルで構成されているとします。ユーザーが _form ビューでワーカーを作成する場合、ファクトリーを選択する必要があります。これを行うために、ワーカーの状態に基づくファクトリーのリストが提供され、ドロップダウンの内容は、ワーカーの状態が変化するたびに JS を介して変更されます。これは魅力のように機能します。

ただし、ユーザーを編集しようとすると、ワーカーの工場を入力して自動選択するための受け入れられた方法として立ち往生しているようです。edit ビューの場合、options_for_select を指定した select タグが適しているようです。残念ながら、新しい Worker を追加すると _form ビューが壊れます。これは、コレクションにデータを入力できる状態がないためです。

TL;DR JS を使用して新しい _form ビューにドロップダウンを設定できますが、同じパラダイムは編集 _form では機能しません。現在のファクトリーとワーカーの状態に基づいてドロップダウンを事前設定する必要があるからです。

どんな助けでも大歓迎です。

編集: Factory ドロップダウンは、選択された状態をコントローラーに渡してどの Factory がその状態にあるかを調べる ajax クエリによって設定されます。

$(document).ready(function(){
  $('.new-contact-select-state select').change(function() {
    var selected_state = $(this).val();
    $.ajax({
      type: 'POST',
      url:  '/factories/get_state_factories.json',
      data: 'state='+selected_state,
      success: function(msg){
  if(msg == 0) {
    //Query returned empty.
    } else {
    //Query Has values.
    var $el = $('.select-state-firm select');
    $el.empty(); // remove old options
    $.each(msg, function(key, value) {
    var firmname = value.firm_name;
    var firm_id = value.id;
    $el.append($("<option></option>").attr("value", firm_id).text(firmname));
});

まだ調理していないコントローラーでは、ドロップダウンは次のようなクエリによって入力されます。

@state_factories = Factory.includes(:address).where(:addresses => {:state => state})

私は Ruby 初心者なので、すぐにうまくいくとは限りません。作成ビューと編集ビューの間のドロップダウンのデータ入力の違いを調整しようとしているだけです。_forms を 2 つ作成するだけで終わる場合があります。

4

1 に答える 1

1

問題は、新しいワーカーを作成するときにワーカーのフォームがレンダリングされるときにエラーが発生することだと理解しています。これは、新しいワーカーには、ドロップダウンに事前入力できる状態がないためです。

それが問題である@worker.new_record?場合は、新しいレコードであるかどうかをテストするために使用@workerできます。そうである場合は、ユーザーに最初に状態を選択するように指示するプロンプト以外のオプションなしでファクトリ セレクト ボックスをレンダリングできます。

于 2012-12-27T10:46:37.263 に答える