【RoR】Ruby on Rails Part16
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2013/01/31(木) 08:07:31.27ID:GGHiBszvhttp://kohada.2ch.net/test/read.cgi/php/1341589839/
http://unkar.org/r/php/1341589839
■参考サイト
<英語>
本家:http://rubyonrails.org
API document:http://api.rubyonrails.com/
開発者のblog:http://weblog.rubyonrails.org/
参考wiki:http://wiki.rubyonrails.org/rails
http://ruby-toolbox.com/
http://rubygems.org/
http://agilewebdevelopment.com/plugins/top_rated
<日本語>
Rails' wiki: http://wiki.fdiary.net/rails/
http://doc.ruby-lang.org/ja/1.9.3/doc/index.html
0752nobodyさん
2013/09/12(木) 20:14:24.50ID:???以下は一例です。
@nanka.session_name = session[session_name]
form_for @nanka do |f|
f.text_field :session_name
0753751
2013/09/12(木) 20:28:31.44ID:???ありがとうございます。
ビューは、752さんが記述されているようにform_forで記述していたため、
@nanka.session_name = session[session_name]
または、
@nanka[session_name] = session[session_name]
にてセッションデータをフォームへセットすることができました。
迅速な回答をいただき、大変助かりました。ありがとうございましたm(_ _)m
0754nobodyさん
2013/09/12(木) 23:47:48.38ID:LD1hnGrgこんなんでもいいかもね。 動くかわかんないけど
0755nobodyさん
2013/09/13(金) 00:00:55.33ID:G88nyhWW実はこのサイトの作業をまだやっているのですが、色々エラーに悩まされています。
http://itmemojp.blogspot.jp/2012/10/rails.html
当方、Rails4を使っているのですが、下記のコードで何でエラーが出るのかよく分かりません。
助けてください。
<div class="field">
<%= f.label :country_code %><br />
<%= f.collection_select(:country_code, Country.where("name_ja not ?", nil), :id, :name_ja) %><br />
</div>
Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL)' at line 1: SELECT `countries`.* FROM `countries` WHERE (name_ja not NULL)
0756nobodyさん
2013/09/13(金) 00:12:36.95ID:piGo/Q/60757nobodyさん
2013/09/13(金) 00:14:44.78ID:piGo/Q/6is がないんじゃね?
f.collection_select(:country_code, Country.where("name_ja is not ?", nil), :id, :name_ja)
0758nobodyさん
2013/09/13(金) 00:34:21.23ID:G88nyhWWありがとうございます。
このリファレンスサイト様の該当箇所を見ると、こう書かれていたのですが、rails4で変わってしまったのでしょうか??
http://railsdoc.com/references/where
>nilでないすべてのデータを取得
>Page.where("title not ?", nil)
># SELECT "pages".* FROM "pages" WHERE (title not NULL)
0759nobodyさん
2013/09/13(金) 01:01:50.13ID:iGb+EzAgSQL文の文法エラーだから、Railsのバージョン(3か4か)は関係ない。
0760nobodyさん
2013/09/13(金) 01:08:15.41ID:G88nyhWWありがとうございます。
<%= f.collection_select(:country_code, Country.where("name_ja not ?", nil), :id, :name_ja) %><br />
"name_ja not ?" を name_ja ? にすれば良いということでしょうか?
すみません、勉強不足です。
0761nobodyさん
2013/09/13(金) 03:12:20.81ID:G88nyhWW>>760については、『Couontry.where(name_ja IS NOT NULL)』としました。
Rails4では、書き方にやや変化もあるようです。
http://xxxcaqui.hatenablog.com/entry/2013/02/25/015146
?絡みは難しそうということが、なんとなく感じたので、今後勉強したいと思います。
親選択肢が選択されたら、それに沿った子選択肢のselect欄が"(非表示から)表示"されるようにするには、どういった感じでjQueryを使うのが良いのでしょうか??
明日はそこらへんを研究してみます。
ありがとうございました。
0763nobodyさん
2013/09/13(金) 18:38:29.94ID:G88nyhWWそうなんですね!!
ざっと復習する時に使うに留めます。
他のソースでも確認しながらにします。
0764nobodyさん
2013/09/13(金) 21:25:55.10ID:iGb+EzAg@railsdoc へ
0765nobodyさん
2013/09/14(土) 00:25:59.15ID:UYW4D9MLルート/hoge/edit (POST)
というサイト構成で
ルートにアクセスしてきても、hoge/indexに誘導したいんですが、
root :to => "hoge#index"
としたら、今度はhoge.html.erbの<form>に書いたpost先の"edit"が、
ルートからアクセスしたらルート/editになってしまいます。
どうすればいいのでしょうか?
0766nobodyさん
2013/09/14(土) 01:16:07.01ID:JzP2wFkZhoge.html.erbはroutesにどういう風アクセスするようにかいてるの?
form_forかform_tagかわからんけどソースはってみて
想像だけど
hoges_controller.rbがあって
def index; end
def edit; end
がそれぞれ定義されてるんだよね?
それぞれがレンダリングするviewは
def index: endがindex.html.erb
def edit: endがedit.html.erbだよね?
0767nobodyさん
2013/09/14(土) 01:17:05.89ID:JzP2wFkZ0768nobodyさん
2013/09/14(土) 23:30:54.97ID:???form_for を使うか、form_tag(action: "edit") とすると良いんじゃないかな。
それから、resourcesで定義されるeditはgetの編集フォームだから後で混乱しそう。
PATCH update、POST create を定義した方が良いと思います。
0769nobodyさん
2013/09/14(土) 23:59:40.02ID:???すいません、先ほどからソースを用意してherokuに挙げてここに貼ろうとしてましたが、
>>768の一言で解決しました。
<%= form_tag("edit", :class => 'hage') do %>
これを↓にしたら万事解決しました。
<%= form_tag({:action => :edit}, :class => 'hage') do %>
ありがとうございました。
次からはもっと説明がうまくできるように頑張ります。
0770nobodyさん
2013/09/15(日) 12:32:59.28ID:0/0Pk/FF上から順に日付けを入れていくのですが、日付が新しい順から入っているかエラーチェックしたいです。
field_forの前後の値を取得する方法が分かりません。
ご存知のかた教えてくれませんか。
0771nobodyさん
2013/09/15(日) 14:17:39.44ID:???というかJSでやるしかない
0773nobodyさん
2013/09/15(日) 23:25:55.38ID:tO4b1j0o各メーカーにシリーズは複数あります
class Maker < ActiveRecord::Base
has_many :series
attr_accessible :name, :uniqueness => true, :null => false
end
class Series < ActiveRecord::Base
belongs_to :maker
attr_accessible :name, :uniqueness => true, :null => false
attr_accessible :maker_id, :null => true
end
Viewでユーザーが特定のメーカーを選んで、そのメーカーの文字列が来ます(例:「キリン」「サントリー」)。
んで、DBから、そのメーカーと一致するシリーズを全て検索したいんですが
ActiveRecordでどう書くのでしょうか?
普通にSQL書けば
SELECT series.name
FROM series
INNER JOIN maker ON series.maker_id = maker.id
WHERE maker.name = @引数
なんですが、ActiveRecordだと Series.include(:maker)から先がよく分かりません
そもそも外部キーの設定が間違っているのかもしれませんが・・・
0775nobodyさん
2013/09/16(月) 00:23:05.70ID:???2. Maker.find_by_name(params[:name]).series
1は>>773に書いてあるSQLと同様のSQLを1回発行、2はmakerのあとにseriesを検索の2回。
上の方のレスにもあるけど、mysqlでは1だとorder("series.created_at")というふうに
where句と異なるテーブルを指定すると有効な(?)indexを参照できずデータ量によっては遅くなるみたい。
それから、attr_accessible じゃなくて、validatesじゃないでしょうか。
0776nobodyさん
2013/09/16(月) 14:41:32.48ID:W80yAF/Oentries = Entry.select('discount email').where(:user_type => 4)
のようにして、ある条件を満たすEntryの一覧を取得したいのですが、
emailカラムの重複を排除するためdiscountを使うと、entriesにはemail以外のカラムの値が入っていません。
emailの重複を排除した上で他のカラムのデータも取得するためにはどうすればいいでしょうか?
0778nobodyさん
2013/09/16(月) 15:29:56.10ID:???0780nobodyさん
2013/09/16(月) 16:02:11.10ID:dRVqKGC70781nobodyさん
2013/09/16(月) 16:07:20.75ID:???ありがとうございます。
ただ、*** NoMethodError Exception: undefined method `series' for #<ActiveRecord::Relation:0x4c1f610>と出ました・・・
>>775
ありがとうございます。
Rails4では、find_by_○○○は廃止されるらしいので、1を選びます。
:validatesは使ったことないのですが、どこのカラムに使うのでしょうか?
mass_assignmentで更新させたいカラムには、attr_accessibleをつける程度の認識だったのですが
0782nobodyさん
2013/09/16(月) 16:14:46.07ID:???あぁ、そうか
Maker.where(name: 'hoge').first.series
じゃないとだめだな
0783nobodyさん
2013/09/16(月) 16:31:13.21ID:???>>779で発行されるこれはSQL的に間違いということでしょうか?
SELECT `entriess`.* FROM `entriess` WHERE (created_at < '2013-08-16 07:19:29') GROUP BY email
SQLite3でも通るのは確認しました。
0784nobodyさん
2013/09/16(月) 17:05:27.47ID:dRVqKGC7標準SQLでは、GROUP BYを指定したときSELECTに書けるのは、
GROUP BYで指定したカラムもしくは集約関数のみに制限される。
だって、グループ化した中のどの行のカラムが代表に出てくるのか予測出来ないじゃん。
0785nobodyさん
2013/09/16(月) 17:28:45.21ID:???納得できる説明ありがとうございました。
0786nobodyさん
2013/09/16(月) 17:48:38.61ID:???validates :name, :uniqueness => true, :presence => true
こんな感じで validates はDBへの入力を制限したいときに使います。
>>773 のコードだとattr_accesibleのハッシュの引数は無視されて、
nameが重複または空のmakerやseriesを作ることが出来ちゃうんじゃないかな。
4.0が対象だけど、目を通しておくと良いと思います。
http://yoshitetsu.rackbox.net/active_record_validations.html
0787nobodyさん
2013/09/16(月) 18:14:55.05ID:???検索に使う項目にインデックス貼っておけばクエリキャッシュを勝手にやってくれるし、1000万件なら普通に使えるんじゃない?
重たくなればmemcached使えばいいし、普通にアプリケーションとデータベースのサーバを分離するだけでいいかと
0788nobodyさん
2013/09/16(月) 18:39:18.91ID:???クエリキャッシュはインデックスあってもなくてもやってくれる
インデックス貼って、クエリキャッシュもあれば…という意味です
0789nobodyさん
2013/09/16(月) 22:02:17.55ID:???プログラミング自体独学なのでもしかしたらとんでもなく馬鹿なことを言ってるかもしれないですが指摘頂けたら嬉しいです。
たとえばUnicornを使った場合、
まずUnicornのワーカースレッドごとにRailsフレームワーク一式がメモリにロードされる。
Railsはマルチスレッドで動作するので、Unicornの各ワーカースレッドの中でRailsのスレッドが複数生成される。
一つのリクエストに対してはこのRailsのスレッドが対応する。
Railsのスレッドはリクエストが来るたびに対応するcontrollerクラスのインスタンスを生成し、処理してviewをレンダーして返す。
合ってますでしょうか?Railsのスレッドってあたりがかなり曖昧でよく分かりません。
0790nobodyさん
2013/09/16(月) 23:34:10.50ID:???ありがとうございます。
通りました
>>786
ありがとうございます。
class Maker < ActiveRecord::Base
has_many :series
attr_accessible :name
validates :name, :uniqueness => true, :presence => true
end
class Series < ActiveRecord::Base
belongs_to :maker
attr_accessible :name, :maker_id
validates :name, :uniqueness => true, :presence => true
validates :maker_id, :presence => true
end
としました
0791nobodyさん
2013/09/17(火) 21:43:16.02ID:???一からPHPやるんやったら、Rubyをやり
と言われました
理由は?
0792nobodyさん
2013/09/17(火) 21:51:05.08ID:???0793nobodyさん
2013/09/17(火) 22:26:04.57ID:???Railsから入ったプログラマとかマジで何も分かってない奴多すぎる
最近じゃRails案件しかできません、ってのもザラ
0794nobodyさん
2013/09/17(火) 22:58:23.56ID:???0795nobodyさん
2013/09/17(火) 23:07:24.25ID:???0798nobodyさん
2013/09/18(水) 13:21:27.97ID:38KesYgnhttp://readwrite.jp/archives/1018
0799nobodyさん
2013/09/18(水) 14:17:04.51ID:38KesYgnhttp://linux.slashdot.jp/story/13/06/16/0617201/Red-Hat-Enterprise-Linux-7でもMySQLに代えてMariaDBを採用
Fedora 19からはMySQLに代わりMariaDBを標準に採用「オラクルはMySQLプロジェクトをさらに閉鎖的にしている」。MariaDB Foundationもすでに設立
http://www.publickey1.jp/blog/13/fedora_19mysqlmariadbmysqlmariadb_foundation.html
0800nobodyさん
2013/09/20(金) 23:47:57.34ID:/88Hvi/K<tr>
<td>
<input type="text" name="post[hoge]">
<input type="text" name="post[fuga]">
<input type="text" name="post[piyo]">
</td>
</tr>
<tr>
<td>
<input type="text" name="post[hoge]">
<input type="text" name="post[fuga]">
<input type="text" name="post[piyo]">
</td>
</tr>
post => [
{:hoge=>"a", :fuga => "b", :piyo=>"c" },
{:hoge=>"a", :fuga => "b", :piyo=>"c" },
{:hoge=>"a", :fuga => "b", :piyo=>"c" },
{:hoge=>"a", :fuga => "b", :piyo=>"c" }
]
こんな風に受け取りたいです。
テーブルを作るときにインデックスをその都度nameの中にいれて、name=post[1][hoge]とかいう風に作るしかないのでしょうか?
0801nobodyさん
2013/09/21(土) 03:23:23.48ID:XEjHK3PQ0802nobodyさん
2013/09/21(土) 14:52:12.97ID:mYeYwJTfありがとうございます。
ググってそれを見つけて試してみたんですが、なぜうまくいかないと勘違いしてしまったんでしょう。
できました。
0803nobodyさん
2013/09/23(月) 00:05:34.74ID:???全てのテスト実行後にfixturesでロードしたデータを削除するようなオプションってありますか?
0804nobodyさん
2013/09/23(月) 00:06:59.80ID:???0805nobodyさん
2013/09/23(月) 05:12:57.84ID:???fixtureでもたぶんいけるんじゃないかな
0806nobodyさん
2013/09/23(月) 14:25:34.70ID:4mTz4dkO0807nobodyさん
2013/09/23(月) 15:03:31.07ID:???<option value="1">あ</option>
<option value="2">い</option>
<option value="3">う</option>
という感じにセットしたくて、
options_for_select([["あ", "1"], ["い", "2"], ["う", "3"]])
options_for_select({"1" => "あ", "2" => "い", "3" => "う" })
としたいんですが、
DBには
|id.| name |
| 1| あ|
| 2| い|
| 3| う|
というデータが入っています。
idには抜けがあるかもしれません
ActiveRecordからoptions_for_selectの適切な書式に変換する簡単な方法はないのでしょうか
0808nobodyさん
2013/09/23(月) 15:53:02.34ID:???0809nobodyさん
2013/09/23(月) 15:54:03.03ID:MNsDJ8HM0810nobodyさん
2013/09/23(月) 15:56:35.70ID:MNsDJ8HM0811nobodyさん
2013/09/23(月) 16:36:05.82ID:???>>809
どうもありがとうございます。
<%= select_tag :Test_id, options_from_collection_for_select(Test.all, :id, :name), {:include_blank => true }%>
で出来ました
0812nobodyさん
2013/09/23(月) 21:12:55.51ID:???マイナーでバージョンアップに対応してないgemに依存してるなどの状況がない限り、やめる理由がないかと
0814nobodyさん
2013/09/24(火) 19:29:33.26ID:8nD8zdFn1) Error:
test_should_destroy_b(BControllerTest):
ActionController::ActionControllerError: Cannot redirect to nil!
「A(1)」と「B(多)」二つのモデルがあります。内容はBのdestroyアクションを実行した時に、Bのindexではなく、Aのshowを呼びたいというものです。
(必要な部分を抜粋したのが下記です)
A.rb: has_many :B
B.rb: belongs_to :A
bs_controller.rb:
def destroy
@b = B.find(params[:id]); @a = @b.a; @b.destroy
respond_to do |format|
format.html { redirect_to @a } #ブラウザでは正常にAのshowアクションが呼び出されるが、機能テストではなぜか@aがnilになっている
format.json { head :no_content }
end
end
bs_controller_test.rb:
setup do
@b = bs(:one)
end
test "should destroy b" do
@a = @b.a; assert_difference('B.count', -1) do
delete :destroy, id: @b
end
assert_redirected_to @a #(あるいはassigns(:a)なのでしょうが、そもそもこの検証に辿り着く前にコントローラー側でエラーが出ます。)
end
end
bs.yml: one: a_id: 1
as.yml: one:{} #no column
0815nobodyさん
2013/09/24(火) 22:34:01.92ID:???0816814
2013/09/25(水) 01:21:39.88ID:qN1AVHHO下記のコードに書き直したところ、テストは通りました。
@b.a_idは取得できても、@b.aが参照できていないようです。
has_manyとか、belongs_toが効いてないんでしょうかね・・・
bs_controller.rb:
def destroy
@b = B.find(params[:id])
@a_id = @b.a_id # 機能テストでは@a_idには正常に1が入る
@a = @b.a # 機能テストでは@aがnilになる
@b.destroy
respond_to do |format|
# format.html { redirect_to @a } #ブラウザでは正常にAのshowアクションが呼び出されるが、機能テストではなぜか@aがnilになっている
format.html {redirect_to cart_path(@cart_id)}
format.json { head :no_content }
end
end
bs_controller_test.rb:
・・・
assert_redirected_to cart_path(assigns(:cart_id))
・・・
0817814
2013/09/25(水) 01:22:10.64ID:???気になってテスト用DBを見に行きました。
フィクスチャで生成した行のidは1から順に振られていくものだと思っていたのですが、
ランダムな値がidに指定されているのですね!
sqlite3 db/test.sqlite3
sqlite> select * from A
...> ;
298486374|2013-09-24 15:57:25|2013-09-24 15:57:25
sqlite> select * from B
...> ;
298486374|1|2013-09-24 15:57:26|2013-09-24 15:57:26 # |1|がa_idの部分
それでテスト中でid=1のAを探しても見つからなかったということだったみたいです。
bs.yml: に
one:
a: one
としたところ、無事@b.aが参照されました!
developmentモードでcreateされるAはidが1~順に増えていくので、
テストfixtureでも同様だと思っていました。理由が分かってすっきりしました。
ありがとうございました。
0818nobodyさん
2013/09/25(水) 01:28:16.08ID:???ぼろ儲けするならrails関係の本を書け
0819nobodyさん
2013/09/25(水) 04:11:14.24ID:???kindleで出版してくれ
0820nobodyさん
2013/09/26(木) 07:53:53.72ID:???Railsとなると、VPS借りて鯖構築からしなきゃならんのよね?
セキュリティー対策面とか考えても辛すぎない?
0821nobodyさん
2013/09/26(木) 07:56:28.75ID:???0822nobodyさん
2013/09/26(木) 09:50:29.63ID:SmKIi4WZサーバ立てるのなんてちょっとパソコンに詳しければ簡単にできるんでしょ?
ハードウェアの多重化なんて必要?
企業で使うとかじゃなく個人的に細々と立てたサーバが攻撃されることなんて滅多にないよね?
攻撃が来るって言ったって大した数じゃないんでしょ?
攻撃されたって大したことは起きないんでしょ?
http://b.hatena.ne.jp/entry/tmaeda.s45.xrea.com/20041101.html
0823nobodyさん
2013/09/26(木) 09:58:07.19ID:???0824nobodyさん
2013/09/26(木) 19:46:48.25ID:4SUn4QORControllerは毎回読み込むのでしょうか?
0825nobodyさん
2013/09/26(木) 22:06:46.27ID:???サーバー構築の経験が無い人にはとっつきにくく見えるかも知れないが大した事はやってない。
一度は自分でやってみた方がいい。
うちの会社でも新人の最初の課題でRailsでサービス作らせる。
awsのアカウントだけ教えて、あとはサーバー構築からアプリ作成、gitでのソース管理、デプロイ設定までを丸投げで一通りやらせる。
いい勉強になると思う。
0826nobodyさん
2013/09/26(木) 22:26:51.29ID:SmKIi4WZ前年比約5.6倍と急増しているが、被害にあった企業は攻撃の数カ月後に気づくという無防備なケースは少なくない。
http://sankei.jp.msn.com/west/west_economy/news/130521/wec13052107010001-n2.htm
0827nobodyさん
2013/09/26(木) 23:39:57.86ID:07vtBVXIというか、明らかに別物ですよね・・・
アプリ\vender\bundle\ruby\1.9.1\gems
C:\Ruby193\lib\ruby\gems\1.9.1\gems
Windowsなのですが、コマンドラインからgem installで入れるgemは自分のRubyフォルダのgemsが更新されて、
アプリのgemsは、bundle installで更新するという認識で宜しいでしょうか。
0828nobodyさん
2013/09/27(金) 00:12:23.64ID:ABAcAb8Q0829827
2013/09/27(金) 00:18:17.07ID:GNhY4oM2bundle installで自動でコンパイルさせると、途中でエラーが出るので
手動でコンパイルしたものを使わせたいのですが・・・・
gemfileにはどう書けばいいのでしょうか。
gem 'gem-name', '0-0-0', :path => フォルダ名
これだとなんかダメな気が・・・
0830827
2013/09/27(金) 00:31:07.35ID:GNhY4oM2すいませんでした
0831nobodyさん
2013/09/28(土) 15:03:08.33ID:nedYazf6http://railsroot/blog/article/:id/edit
ここから記事を更新しようとして以下のアクションにpostするとき
Article_Controller#update
:idについては、HTML側の<form><input /></form>の中に値を書いて一緒に送信するしかないのでしょうか?
0832nobodyさん
2013/09/28(土) 15:09:52.87ID:???0833nobodyさん
2013/09/28(土) 17:31:53.81ID:N7y9oC8I0834nobodyさん
2013/09/28(土) 22:30:11.13ID:Wtn6Ig+Rありがとうございます。
なるほど。そうするとparams[:id]が取れるわけですね。
>>833
ありがとうございます。
それは確認用に知っています。
ブログの記事作成と記事更新で、基本的にDRYのために、
なるたけ同じHTMLを再利用したいのですが・・・
Article_Controller#create → ブログ記事の新規作成 POST
Article_Controller#update → ブログ記事の更新 PUT
となっているとき、HTMLの仕様で<form>にはメソッドを一つしか書けないので困っています。
つまり、ブログ記事の新規作成と、ブログ記事の更新では、コントローラーのアクションの振り分け先が違うので、
新規作成と記事更新で、<form>のメソッドだけが異なるHTMLを2つ用意する必要が出てきてしまってるということです・・・
�@type=submitは使わずただのボタンにして、新規作成(POST)か更新(PUT)かはJSで送信先を切り替えて行う
�Atype=submitを使い、JSで<form>のmethodを新規作成(POST)か更新(PUT)かに切り替える
�B<form method=<% @method %>にして コントローラーで新規作成(POST)か更新(PUT)かをレンダリングする。
�C新規作成(POST)と更新(PUT)でHTMLを2つ用意するが、共通部分はpartialにする。
という選択肢を考えましたが、皆さんならどれにされますか?
0836nobodyさん
2013/09/29(日) 10:14:53.26ID:xQXyIa/GURL変わるよ。
0837nobodyさん
2013/10/05(土) 18:14:10.04ID:BJITTvALひょっとするとRailsで使う場合は特別な配慮が必要なのですか?
今は、テンプレート「new」の画面に下記のようなコードを直接書いていて、いじくっている段階です。
昨日までは表示されていたのですが(下記のコードではありませんが)、今日は下記のコードで表示されなくなってしまいました。
いまいち、何を直せば良いのか分からないなので困っています。
下記のようなシンプルなコードでも表示されないということは、Railsで開発していること特有のものなのでしょうか?
ちなみに1IPからのアクセス数制限などは今は設けていません。
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=MYAPIKEY&amp;amp;sensor=false"></script>
<script>
var latlng = new google.maps.latLng(38, 135);
var options = {
zoom: 15,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById('map'), options);
</script>
<div id="map" style="width:300px; height:300px"></div>
0838nobodyさん
2013/10/05(土) 18:31:40.97ID:???Railsは無関係
0839nobodyさん
2013/10/05(土) 18:39:04.06ID:BJITTvALそうなんですね!
ありがとうございます。
もう一度調べなおしてみます。
0840nobodyさん
2013/10/05(土) 18:45:53.24ID:vnbnCFn1>?key=MYAPIKEY&amp;sensor=false
ここ実際にはどう書いてあるの?
?key=MYAPIKEY&sensor=false の&がエスケープ(→&)されて
?key=MYAPIKEY&amp;sensor=false になってるの?
?key=MYAPIKEY&sensor=false の & をエスケープした
?key=MYAPIKEY&sensor=false が入っているのが正しいような気がするんだが。
0841nobodyさん
2013/10/05(土) 18:53:48.62ID:BJITTvALこう表示されていたとは!
私のnew.html.erbでは、エスケープされる前の「&」だけです。
先ほど、googleMapの方で質問させていただいていて、その後にrails特有のものなのかと思い、こちらで質問させていただいています。
googleMap板で貼ったコードをコピペして、こちらの質問で使ったので二度エスケープされていました。
すみません。
0842841
2013/10/05(土) 20:59:24.40ID:BJITTvAL単純にhtmlファイルを作ってブラウザに放り投げると表示されます。
もう少しググってみます。
0843nobodyさん
2013/10/05(土) 21:08:29.89ID:???0844841
2013/10/05(土) 21:13:18.90ID:BJITTvALrails4です!
turbolinksとか、そこらへんでしょうか?
複雑そうなのでまだ放置しています^^;
rails4でmaps API使ってる人は、どういう使い方しているのか疑問もありますが、
まずは、pjaxも調べてみます!
ありがとうございます。
0846841
2013/10/05(土) 22:03:25.62ID:BJITTvALturbolinksの切り方から調べてやってみてご報告いたします!
(最終的にはturbolinksを捨てたくはないのですが)
0847841
2013/10/05(土) 22:25:04.48ID:BJITTvAL地図の領域だけ確保され、肝心の地図は表示されない状態です。
一昨日までは表示されてたんだけどな〜^^;
多少コードは違いますが。
0848841
2013/10/05(土) 23:12:50.97ID:BJITTvALただ、色々なサイトからコードを借りてきては試しで、やっていたので、
何をミスしてたのかよく分かりません。
スレ汚しすみませんでした。
rails4でも、GoogleMapsAPIv3を普通に使えると思います。ということが分かりました。
では、また!!
0849nobodyさん
2013/10/05(土) 23:19:09.67ID:???0850841
2013/10/05(土) 23:25:48.19ID:BJITTvAL非常に基礎的にところに絡んでいるとは思いますが、理解できていないので、『なぜか』を教えていただけると非常にありがたいです。
実験段階なので、「new.html.erb」内でやっているのですが、
地図を表示する場所<div>を下記のように<script>の上に書けば表示され、
下に書けば表示されないようです!
多分、シンプルなルールに抵触するかしないかの問題なのだと思いますが、一応フィードバックさせていただきました。
<div id="map" style="width:300px; height:300px"></div>
<script src="http://maps.googleapis.com/maps/api/js?key=MYAPIKEY &sensor=false"></script>
<script>
var latlng = new google.maps.LatLng(32, 135);
var options = {
zoom: 15,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById('map'), options);
</script>
0851841
2013/10/05(土) 23:33:59.20ID:BJITTvAL先ほどまでのvar latlng等のコードを、function initializeに格納して、
google.maps.event.addDomListener(window, "load", initialize);
で呼び出さないといけなかったのかもしれません。
色々な基礎サイトのコードを組み合わせて実験していたため、
GoogleMapsの本に書かれているこのルール?を適用していなかったことが失敗の原因のような気がします。
多分。
ということで、railsにも関係なかったし、初歩的な自爆っぽいです。
度々失礼いたしました。
協力してくださった皆様、ありがとうございます。
0852nobodyさん
2013/10/05(土) 23:48:56.02ID:vnbnCFn1そうなりそうですな。
■ このスレッドは過去ログ倉庫に格納されています