0

次のようなhtmlがあります。

    <div class="row well">
      <form method="POST">
        <ol id="velArea">
          <li>  Layer velocity: (m/s) <input type="text" name="source[]"> </li>
        </ol>
        <input type="button" value="Add another layer" name="velocity" onClick="addVel('velArea');">
      </form>
    </div>

そして、エリアにhtmlを追加するjavascript関数

    function addVel(area)
    {
      var field_area = document.getElementById(area);
      field_area.innerHTML += "<li>  Layer velocity: (m/s) <input type='text' name='velocity'> <a style='cursor:pointer;color:grey;' onclick='this.parentNode.parentNode.removeChild(this.parentNode);''>delete</a> </li>";
    }

Rails 関数の各入力フィールドの値を読み取る必要があります。そして、それを行う方法がわかりません。ブラウザ関連とサーバー関連を分離しておく方が良いと最終的に理解するまで、レールでアクティブなモデルを調べて何日も無駄にしました。そこで、JavaScript を少し学び、いくつかの関数を作成しました。はい、私は Web 開発の初心者です。Rails3.2を使用しています。

フィールド情報を使用したい関数は、ボタンによって呼び出されます。

     <%= button_to "Run single inversion", {:action => "my_func", }, {:remote => true, :form => { "data-type" => "json" }, :class => "btn btn-primary"} %>

コントローラーの機能は次のとおりです。

    def my_func
      render :nothing => true
      vel = params[:velocity]
      puts vel.class
      puts 'Hi'
    end

私が得る出力は

    NilClass
    Hi

だから私は明らかに引数を正しく渡していません。button_to を使用するときは、post メソッドで速度配列を渡す必要があると思いますが、その方法がわかりません。

また、データベース指向のものではなく、入力の値が必要なので、activeRecord プロパティを使用して検索することはできません。

4

2 に答える 2

1

params[:model_name]Railsコントローラーでは、JavaScriptがフォームを送信する必要があるメソッドにフォームを送信するときに、にアクセスできるはずです。params[:id]またはにアクセスすることもできますparams[:firstname]

私もあなたが何をしているのか少し混乱しています <input type='text'> </input>

これは、モデルがそれを識別し、その値を列に関連付けるために必要です。また、入力を行う適切な方法ではありません。

<input type="text" name="column_name"/>

あなたが望むものに近いです

于 2012-11-03T17:40:47.103 に答える
1

なぜあなたのコードがとても複雑なのかわかりません。しかし基本的に、RailsWay ではないものがいくつかあります。まず、Rails Form Helpersを見てください。規則を使用している場合、次のような params ハッシュを受け取ります。

params[:velocities][:velocity]
params[:velocities][:source]

フォーム タグは次のようになります。

<input type="text" name="velocities[velocity]" id="velocities_velocity" value="">
<input type="text" name="velocities[source]" id="velocities_source" value="">

上記のコードでは、vel の値を期待しています。結果の NilClass は、params[:velocity] に nil があるため、vel は nil です。次の点を確認する必要があります。

puts params.inspect

または、Rails アプリケーションを実行しているときにログを確認してください。

そして、ボタンと入力フィールドの名前属性を再確認してください。名前属性はどちらも「速度」です。ボタンが送信された後者の場合、 params[:velocity] の値は確かに空です...

于 2012-11-03T23:38:52.290 に答える