質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Geolocation

Geolocation(ジオロケーション)は、携帯電話やインターネットに接続したコンピューターターミナルなど、オブジェクトの現実世界での地理的位置の情報を扱う技術であり、位置評価の実施や、実際に評価された位置を示す場合もあります。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Slim

SlimはPHPアプリケーションを開発するための軽量なマイクロフレームワークです。

Q&A

0回答

518閲覧

JavaScriptで入力フォームに値をセットしたいです

t.togashi

総合スコア22

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Geolocation

Geolocation(ジオロケーション)は、携帯電話やインターネットに接続したコンピューターターミナルなど、オブジェクトの現実世界での地理的位置の情報を扱う技術であり、位置評価の実施や、実際に評価された位置を示す場合もあります。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Slim

SlimはPHPアプリケーションを開発するための軽量なマイクロフレームワークです。

0グッド

0クリップ

投稿2019/09/09 13:40

前提・実現したいこと

Ruby on Railsにて、Geolocation APIを使用して取得した緯度・経度情報を、入力フォームにセットできるように試みています。

発生している問題・エラーメッセージ

viewに設置したボタンを押すと、緯度・経度情報を入力フォームにセットするJavaScriptが作動するようにしたつもりなのですが、ボタンを押しても、エラーメッセージは生じないのですが、何も反応がありません。
お手数ですが、どこに問題があるのかご教示いただきたいです。

views/damages/new.html.slim

= form_with model: @damage, local: true do |f| .form-group = f.label :title, '題名' = f.text_field :title, class: 'form-control' .form-group = f.label :place, '場所' = f.text_field :place, class: 'form-control' .form-group = f.label :latitude, '緯度' = f.text_field :latitude, class: 'form-control', id: 'latitude' .form-group = f.label :longitude, '経度' = f.text_field :longitude, class: 'form-control', id: 'longitude' button onclick="geoFindMe()" type="button" 緯度・経度情報を取得 .form-group = f.label :description, '内容' = f.text_area :description, rows: 10, class: 'form-control' .form-group = f.label :amount, '被害額(円)' = f.text_field :amount, class: 'form-control' .form-group = f.label :image, '写真' = f.file_field :image, class: 'form-control' = f.submit class: 'btn btn-primary mt-3'

assets/javascripts/application.js

// This is a manifest file that'll be compiled into application.js, which will include all the files // listed below. // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, or any plugin's // vendor/assets/javascripts directory can be referenced here using a relative path. // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the // compiled file. JavaScript code in this file should be added after the last require_* statement. // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details // about supported directives. //= require rails-ujs //= require activestorage //= require turbolinks //= require_tree . //= require bootstrap-sprockets //= require underscore //= require gmaps/google function geoFindMe() { // ユーザーの端末がGeoLocation APIに対応しているかの判定 // 対応している場合 if( navigator.geolocation ) { // 現在地を取得 navigator.geolocation.getCurrentPosition( // [第1引数] 取得に成功した場合の関数 function( position ) { 取得したデータの整理 var data = position.coords ; // データの整理 var lat = data.latitude ; var lng = data.longitude ; // // HTMLへの書き出し // document.getElementById( 'result' ).innerHTML = '<dl><dt>緯度</dt><dd>' + lat + '</dd><dt>経度</dt><dd>' + lng + '</dd></dl>' ; // views/damages/new.html.slimの緯度・経度欄へ入力 document.getElementById( "latitude" ).value = lat ; document.getElementById( "longitude" ).value = lng ; }, // [第2引数] 取得に失敗した場合の関数 function( error ) { // エラーコード(error.code)の番号 // 0:UNKNOWN_ERROR 原因不明のエラー // 1:PERMISSION_DENIED 利用者が位置情報の取得を許可しなかった // 2:POSITION_UNAVAILABLE 電波状況などで位置情報が取得できなかった // 3:TIMEOUT 位置情報の取得に時間がかかり過ぎた… // エラー番号に対応したメッセージ var errorInfo = [ "原因不明のエラーが発生しました…。" , "位置情報の取得が許可されませんでした…。" , "電波状況などで位置情報が取得できませんでした…。" , "位置情報の取得に時間がかかり過ぎてタイムアウトしました…。" ] ; // エラー番号 var errorNo = error.code ; // エラーメッセージ var errorMessage = "[エラー番号: " + errorNo + "]\n" + errorInfo[ errorNo ] ; // アラート表示 alert( errorMessage ) ; // HTMLに書き出し document.getElementById("result").innerHTML = errorMessage; } , // [第3引数] オプション { "enableHighAccuracy": false } ) ; } // 対応していない場合 else { // エラーメッセージ var errorMessage = "お使いの端末は、GeoLacation APIに対応していません。" ; // アラート表示 alert( errorMessage ) ; } }

views/layouts/application.html.slim

doctype html html head meta name="viewport" content="width=device-width, initial-scale=1" title | DisasterDamageApp = csrf_meta_tags = csp_meta_tag = stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' = javascript_include_tag 'application', 'data-turbolinks-track': 'reload' script src="//maps.google.com/maps/api/js?key=AIzaSyDD8_DF2AUAtXfZVcQYFUi3T3AslQKAXaw" script src="//cdn.rawgit.com/mahnunchik/markerclustererplus/master/dist/markerclusterer.min.js" script src='//cdn.rawgit.com/printercu/google-maps-utility-library-v3-read-only/master/infobox/src/infobox_packed.js' type='text/javascript' body  〜〜〜以下省略〜〜〜

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問