質問編集履歴

1

追加情報

2015/08/13 12:22

投稿

jusco
jusco

スコア80

test CHANGED
File without changes
test CHANGED
@@ -49,3 +49,141 @@
49
49
  jqueryの記述と、ajax実装についてなるべく具体的なコードを教えていただけますでしょうか。
50
50
 
51
51
  よろしくお願いいたします。
52
+
53
+
54
+
55
+ ---
56
+
57
+ 追記
58
+
59
+
60
+
61
+ ご回答してくださった皆様、ありがとうございます。
62
+
63
+
64
+
65
+
66
+
67
+ [こちらのページ](http://kawahiro.hatenablog.jp/entry/2013/10/26/233051)を参考に、以下の様に実装することで確かに連動ボックス自体の実装は確認できました。
68
+
69
+
70
+
71
+ しかし、都道府県と市区町村をそれぞれPostクラスのカラムに保存する方法がわかりません。
72
+
73
+
74
+
75
+ ```Ruby
76
+
77
+ #view
78
+
79
+ <%= form_for @post do |post| %>
80
+
81
+ 都道府県 <%= post.collection_select :mst_prefecture , MstPrefecture.all,:id,:name %><br />
82
+
83
+ 市区町村 <%= render partial: 'shared/cities', locals: { prefecture_id: MstPrefecture.first.id } %>
84
+
85
+ #shared/cities
86
+
87
+
88
+
89
+ <%= collection_select :post , :mst_city, MstCity.where(prefecture_id: prefecture_id),:id,:name %>
90
+
91
+
92
+
93
+ #posts_controller.rb
94
+
95
+ def cities_select
96
+
97
+ if request.xhr?
98
+
99
+ render partial: 'shared/cities', locals: { prefecture_id: params[:prefecture_id]}
100
+
101
+ end
102
+
103
+ end
104
+
105
+
106
+
107
+ #config/routes.rb
108
+
109
+ resources :posts do
110
+
111
+ collection do
112
+
113
+ get :cities_select
114
+
115
+ end
116
+
117
+ end
118
+
119
+
120
+
121
+ #posts.coffee
122
+
123
+ $(document).on 'change', '#post_mst_prefecture', ->
124
+
125
+ $.ajax(
126
+
127
+ type: 'GET'
128
+
129
+ url: '/posts/cities_select'
130
+
131
+ data: {
132
+
133
+ prefecture_id: $(this).val()
134
+
135
+ }
136
+
137
+ ).done (data) ->
138
+
139
+ $('#post_mst_city').html(data)
140
+
141
+
142
+
143
+ #post.rb
144
+
145
+ class Post < ActiveRecord::Base
146
+
147
+ belongs_to :mst_prefecture
148
+
149
+ belongs_to :mst_city
150
+
151
+ end
152
+
153
+
154
+
155
+ # mst_prefecture.rb
156
+
157
+ class MstPrefecture < ActiveRecord::Base
158
+
159
+ has_many :mst_cities
160
+
161
+ end
162
+
163
+
164
+
165
+ # ms_city.rb
166
+
167
+ class MstCity < ActiveRecord::Base
168
+
169
+ belongs_to :mst_prefecture
170
+
171
+ end
172
+
173
+ ```
174
+
175
+
176
+
177
+ 上記の実装だと、確かに都道府県に合わせた市区町村が表示されるようにはなったのですが、それぞれのvalueを、Post.prefecture, Post.city に格納しようと collection_select を弄ると動作しなくなってしまうのです。
178
+
179
+
180
+
181
+ また、上記記述ではvalueがidとなってしまっており、データを格納する際にそのデータが数値になってしまいます。
182
+
183
+ 出来れば保存するデータはidではなくnameで、都道府県や市区町村の文字データとして保存したいです。
184
+
185
+
186
+
187
+
188
+
189
+ どのように記述すればよろしいでしょうか。