質問編集履歴

1

change

2017/08/10 12:23

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -6,314 +6,6 @@
6
6
 
7
7
 
8
8
 
9
- バージョン:
10
-
11
- ・Rails5
12
-
13
- 使用したgem:
14
-
15
- ・gem 'aws-sdk', '~> 2.3'
16
-
17
- ・gem "carrierwave"
18
-
19
- ・gem "fog"
20
-
21
-
22
-
23
- rails5だと、参考にしたページで書いている`attr_accessible`が使えないということで、[こちら](http://qiita.com/aquamikan/items/57c6c95b39f961a18453)を参考にして書き換えてみました。
24
-
25
- しかし、書き方がうまく理解できず、分かりません!
26
-
27
- 私は、`user_controller.rb`の`update`に書きたいのですが、[参考ページ](http://qiita.com/aquamikan/items/57c6c95b39f961a18453)は`create`の方に書いているので、どう書き換えれば良いか分からない状況です。
28
-
29
-
30
-
31
- **私なりに書き換えた時の際のエラー**
32
-
33
- ActionController::ParameterMissing in UsersController#update
34
-
35
- param is missing or the value is empty: user
36
-
37
- ```ruby
38
-
39
- @user = User.find_by(id: params[:id])
40
-
41
- @user.name = params[:name]
42
-
43
- // @user.image =params.require(:user).permit(:amazon_image_url, :image)//
44
-
45
- @user.email = params[:email]
46
-
47
- @user.phone_number = params[:phone_number]
48
-
49
- @user.description = params[:description]
50
-
51
- //コメントアウトしたとこがエラー箇所です
52
-
53
- ```
54
-
55
-
56
-
57
- ###やりたいこと
58
-
59
- ・エラーを解決し、Herokuにアップした際も、うまくプロフィール画像が表示されるようにしたいです。
60
-
61
-
62
-
63
- **user.rb**
64
-
65
- ```ruby
66
-
67
- class User < ApplicationRecord
68
-
69
- devise :database_authenticatable, :registerable,
70
-
71
- :recoverable, :rememberable, :trackable, :validatable, :omniauthable
72
-
73
-
74
-
75
- validates :name, presence: true,uniqueness: true, length: { maximum: 50 }
76
-
77
- validates :email, {presence: true, uniqueness: true}
78
-
79
-
80
-
81
- has_many :questions
82
-
83
- has_many :answers
84
-
85
- has_many :likes
86
-
87
-
88
-
89
- mount_uploader :image, ImageUploader
90
-
91
-
92
-
93
- def self.from_omniauth(auth)
94
-
95
- where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
96
-
97
- user.email = auth.info.email
98
-
99
- user.password = Devise.friendly_token[0,20]
100
-
101
- user.name = auth.info.name # assuming the user model has a name
102
-
103
- user.image = "http://graph.facebook.com/#{auth.uid}/picture?type=large" # assuming the user model has an image
104
-
105
- # If you are using confirmable and the provider(s) you use validate emails,
106
-
107
- # uncomment the line below to skip the confirmation emails.
108
-
109
- # user.skip_confirmation!
110
-
111
- end
112
-
113
- end
114
-
115
-
116
-
117
- def questions
118
-
119
- return Question.where(user_id: self.id)
120
-
121
- end
122
-
123
-
124
-
125
- end
126
-
127
- ```
128
-
129
- **migration**
130
-
131
- ```ruby
132
-
133
- class AddImageToUsers < ActiveRecord::Migration[5.1]
134
-
135
- def change
136
-
137
- add_column :users, :image, :string
138
-
139
- end
140
-
141
- end
142
-
143
- ```
144
-
145
-
146
-
147
- **user_controller.rb**
148
-
149
- ```Ruby
150
-
151
- class UsersController < ApplicationController
152
-
153
- def update
154
-
155
- @user = User.find_by(id: params[:id])
156
-
157
- @user.name = params[:name]
158
-
159
- @user.image =params.require(:user).permit(:amazon_image_url, :image)
160
-
161
- @user.email = params[:email]
162
-
163
- @user.phone_number = params[:phone_number]
164
-
165
- @user.description = params[:description]
166
-
167
-
168
-
169
- if @user.save
170
-
171
- flash[:notice] = "ユーザー情報を編集しました"
172
-
173
- redirect_to("/users/#{@user.id}")
174
-
175
- else
176
-
177
- redirect_to edit_user_path(current_user), notice: "ユーザー情報を更新できませんでした"
178
-
179
- end
180
-
181
- end
182
-
183
- end
184
-
185
- ```
186
-
187
- **views/users/edit.html.erb**
188
-
189
- ```ruby
190
-
191
- <%= form_tag("/users/#{@user.id}/update", :html => {:multipart => true}) do %>
192
-
193
- <div class="form-group">
194
-
195
- <p>*ユーザー名</p>
196
-
197
- <input name="name" value="<%= @user.name %>" class="form-control">
198
-
199
- </div>
200
-
201
- <div class="form-group">
202
-
203
- <p>プロフィール画像</p>
204
-
205
- <input name="image" type="file" value="<%= @user.image %>" class="form-control">
206
-
207
- </div>
208
-
209
- <div class="form-group">
210
-
211
- <p>*メールアドレス</p>
212
-
213
- <input name="email" value="<%= @user.email %>" class="form-control">
214
-
215
- </div>
216
-
217
- <div class="form-group">
218
-
219
- <p>電話番号</p>
220
-
221
- <input name="phone_number" value="<%= @user.phone_number %>" class="form-control">
222
-
223
- </div>
224
-
225
- <div class="form-group">
226
-
227
- <p>自己紹介</p>
228
-
229
- <input name="description" value="<%= @user.description %>" class="form-control">
230
-
231
- </div>
232
-
233
-
234
-
235
- <div class="actions">
236
-
237
- <input type="submit" value="保存" class="btn btn-primary">
238
-
239
- </div>
240
-
241
- <% end %>
242
-
243
- ```
244
-
245
-
246
-
247
- **config/initializers/carrierwave.rb**
248
-
249
- ```ruby
250
-
251
- CarrierWave.configure do |config|
252
-
253
- config.fog_credentials = {
254
-
255
- :provider => 'AWS',
256
-
257
- :aws_access_key_id => ENV["AWS_ACCESS_KEY_ID"],
258
-
259
- :aws_secret_access_key => ENV["AWS_SECRET_ACCESS_KEY"]
260
-
261
- }
262
-
263
- config.fog_directory = ENV["AWS_S3_BUCKET"]
264
-
265
- end
266
-
267
- ```
268
-
269
-
270
-
271
- **config/application.yml**
272
-
273
- ```ruby
274
-
275
- S3_BUCKET_NAME: "******"
276
-
277
- AWS_ACCESS_KEY_ID: "*************"
278
-
279
- AWS_SECRET_ACCESS_KEY: "*******************"
280
-
281
- AWS_REGION: "ap-northeast-1"
282
-
283
- ```
284
-
285
-
286
-
287
- **app/uploders/image_uploder.rb**
288
-
289
- ```ruby
290
-
291
- class ImageUploader < CarrierWave::Uploader::Base
292
-
293
-
294
-
295
- storage :fog
296
-
297
-
298
-
299
- def cache_dir
300
-
301
- "#{Rails.root}/tmp/uploads"
302
-
303
- end
304
-
305
-
306
-
307
-
308
-
309
- end
310
-
311
-
312
-
313
- ```
314
-
315
-
316
-
317
9
  このような形で、現在は記述しております!
318
10
 
319
11
  AWS S3に保存する上で、間違っているところなどがあれば、ご指摘していただけると幸いです。