回答編集履歴

2

K

2017/03/06 05:51

投稿

moke
moke

スコア2241

test CHANGED
@@ -86,7 +86,7 @@
86
86
 
87
87
  <%= f.search_field :place_city_cont %>
88
88
 
89
- serach
89
+ <%end%>
90
90
 
91
91
  ```
92
92
 

1

変更

2017/03/06 05:51

投稿

moke
moke

スコア2241

test CHANGED
@@ -22,13 +22,93 @@
22
22
 
23
23
 
24
24
 
25
- ユーザーら、携帯GPSから住所取得したり、したいですし。
25
+ どうも管理者が入力するようなので具体的なコード書くと
26
26
 
27
+ まずransackというgemを導入します。
28
+
29
+ 地方(region)・都道府県(perfecture)・地域(city)
30
+
27
- お店側ら、最低も郵便番号ら、住所が入るようにしたほうがいと思います。
31
+ こん感じしょうcityは六本木エリアとか漠然としたものを想像しています。
32
+
33
+ で、教科書通りならregion modelとperfecture modelとcity modelを作るのですが。
34
+
35
+ cityをどんだけ細かくするかにもよりますが、検索時のjoinのコストを考えると、下手な正規化を行わず。
36
+
37
+ tableは places id,region:string,perfecture:string,city:string)
38
+
39
+ |id|region|perfecture|city|
40
+
41
+ |:--|:--|:--:|--:|
42
+
43
+ |1|関東|東京都|六本木|
44
+
45
+ |2|関東|東京都|新宿|
28
46
 
29
47
 
30
48
 
49
+ で十分かと思います。
50
+
51
+ place has_many: :shops
52
+
53
+ shop belongs_to: place
54
+
55
+ みたいにしてplace_idをshopにもたせて
56
+
57
+ ```ruby
58
+
59
+ shops_controller.rb
60
+
61
+ def index
62
+
63
+ @q=Shop.search(params[:q])
64
+
65
+ @shops=@q.result
66
+
67
+ ~
68
+
69
+ end
70
+
71
+ ```
72
+
73
+ として
74
+
75
+ サーチフォームなら
76
+
77
+ ```ruby
78
+
79
+ _serach.html.erb
80
+
81
+ <%= search_form_for @q ,:url=>{:controller=>"shops",:action=>"index"} do |f| %>
82
+
83
+ <%= f.search_field :place_region_cont %>
84
+
85
+ <%= f.search_field :place_prefecture_cont %>
86
+
87
+ <%= f.search_field :place_city_cont %>
88
+
89
+ serach
90
+
91
+ ```
92
+
93
+ リンクなら
94
+
95
+ ```ruby
96
+
97
+ <%= link_to '東京都',{:controller=>"shops",:action=>"index",:q=>{:place_prefecture_cont=>URI.escape('東京都')}%>
98
+
99
+ ```
100
+
31
- せよ、入力をどうるかを考えて初めて具体的な設計ができると思います。
101
+ みたいな感じにすればいいと思います。
102
+
103
+ URI.escapeはなくてもいいかもしれませんが念のため
104
+
105
+ controllerの一番上に
106
+
107
+ require 'uri'
108
+
109
+ と追記してください
110
+
111
+
32
112
 
33
113
 
34
114