私は趣味と同じように新しいスキルを学ぼうとしています。私は多くのことを学んだが、混乱するものはまだあります。Ruby経由のMongoDBへのHTML形式
私はMongoDBにDB = phoneを設定し、collection = recordsに電話ディレクトリを推測しているように格納しています。私はJSONファイルを作成し、すべてをインポートし、すべてうまくいった。
次にRuby/Sinatraアプリを作成して、データを表に表示しました。それも素晴らしい作品です。
ここで、HTMLフォームを使用して新しいユーザーをデータベースに送信したいと考えています。テストのための私の基本的な形は、私はAJAXを経由してこれを実行しようとしているが、それたので、(私は、「「=アクションを残している、次の通りであるとmyTest.html
<form id="form">
First name:<br>
<input type="text" name="fname" value="Mickey">
<br> Last name:<br>
<input type="text" name="lname" value="Mouse">
<br><br>
<input type="submit" value="Submit" id="commit">
</form>
<script>
としてシナトラpublicディレクトリにありますこれは私のAJAXの試みだった)動作しませんでした:私はこれが動作することを確認した
get '/myTest' do
result = Record.collection.insert_one({ :fname =>"Justin"})
end
:私のRubyファイル、phone.rbで
<script>
$(function() {
$.ajax({
url: 'http://localhost:4567/api/v1/myTest',
type: 'post',
dataType: 'json',
jsonp: 'json', // mongod is expecting the parameter name to be called "jsonp"
success: function(data) {
//console.log('success', data);
console.log("Success");
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
console.log('error', errorThrown);
}
});
});
、私はこれを持っています。私はどのように
localhost:4567/myTest.html?fname=Justin&lname=Smith
:私は、フォーム上の送信ボタンをクリックすると、私はこのようなURLエンコードされた文字列を取得し、私はこだわっています
は2を接続している(または私もする必要がありますか?)フォームからURLデータを取り出し、それを新しい文書としてMongoに挿入しますか?
私は答えを探していましたが、Webのほとんどすべての情報は、私が使用していないRailsとして戻ってきます。私はまずRubyですべてをやることを学びたい。 Javascript側から問題を見ると、事実上すべての参照がNode.jsを指していますが、これは私が使用していないものです。
助けてください、または少なくとも正しい方向にうなずきます。 おかげ
UPDATE 私は明らかに私のRubyでミスをした - それはPOSTでなければなりません。だから私は、新しいRubyのブロックを作った、と私は、ブラウザから直接アクセスし、ローカルホスト/ API/V1/MYTEST?FNAME =ミッキー& LNAME =マウスを入力すると、それがオン
post '/myTest' do
fname = params[:fname]
lname = params[:lname]
Record.collection.insert_one({'fname' => fname, 'lname' => lname})
end
データベースに情報を入力します私は以下を追加しようとしました:
<form id="form" method="POST" action="/myTest">
First name:<br>
<input type="text" name="fname">
<br> Last name:<br>
<input type="text" name="lname">
<br><br>
<input type="submit" value="Submit" id="commit">
</form>
<script>
$(function() {
//hang on event of form with id=myform
$("#form").submit(function(e) {
//prevent Default functionality
e.preventDefault();
//get the action-url of the form
var actionurl = '/myTest';
$.ajax({
url: actionurl,
type: 'post',
dataType: 'application/json',
data: $("#form").serialize(),
success: function(data) {
console.log('success')
}
});
});
});
</script>
私はRuby/myTestにヒットできません。私は "SinatraはこのDittyを知らない" 404を取得し続けている。私はSinatraを使ってViewsフォルダのHTMLをerbとして作成していないだろうか?私のページはパブリックフォルダにあり、Sinatraから独立して書かれています。
ありがとうございます - あなたは正しいです。 RubyをPOSTに更新しました。しかし、私はフォームを提出するとSinatraで404エラーが発生します。 – user2843365
ええと、私は参照してください。あなたのURLが正しいことを確認しましたか? Sinatraエンドポイントのフルパスを 'http:// localhost:3000/api/v1/myTest'のように' actionurl'変数に割り当てることができます。エンドポイントが動作しているかどうかを確認することもできます。郵便配達員またはカール。 – xlts
完全なURLを使用しようとしましたが、動作しませんでした。私はそれを行う方法がわからないので、カールを研究しなければならないでしょう。ヒントをありがとう! – user2843365