質問するログイン新規登録

質問編集履歴

8

説明追加

2020/02/06 05:46

投稿

1234567
1234567

スコア7

title CHANGED
File without changes
body CHANGED
@@ -393,6 +393,9 @@
393
393
 
394
394
  ちなみにform_tagに戻すと投稿の編集も普通に機能するため、余計に理解できない状態にあります。むしろform_tagのままでよければ全て解決なんですが、Rails 5.1 以降は推奨されていないようなので、現場に出たことがない自分としてはそれでいいのか判断しかねています。
395
395
 
396
+ また、posts_create_pathに向けてフォームの送信してる事に関しては、エラー画面下部に表示されてる内容から送信先HTTP Verbの「PATCH /posts/:id/update(.:format)」がposts_create_pathのなかに入れ子(?)のようになっていたので、そこに従って書いていました。
397
+ そのように記載する事に関しては深く考えがあったわけではありませんでした。
398
+
396
399
  色々とおかしな書き方をしてるとは思うのですが、現状として解決したいのは投稿内容の編集をform_forかform_withで機能させることです。
397
400
 
398
401
  自分では解決しかねております。ご教授いただけると幸いです。どうぞ、よろしくお願いします。

7

書式の改善

2020/02/06 05:46

投稿

1234567
1234567

スコア7

title CHANGED
File without changes
body CHANGED
@@ -284,13 +284,26 @@
284
284
  ```
285
285
  posts/_form.html.erb
286
286
 
287
+ <div class="post-new-container">
287
- <%= form_for @post do |f| %>
288
+ <%= form_for @post, url: posts_new_path do |f| %>
288
289
 
290
+ <div class="posts-new-item">
289
- <%= f.label :image, "画像(※必須)" %><br>
291
+ <%= f.label :title, "タイトル(※必須)" %><br>
290
- <%= f.file_field :image %><br><br>
292
+ <%= f.text_field :title %><br><br>
291
293
 
294
+ <%= f.label :content, "感想・まとめ(※必須)" %><br>
295
+ <%= f.text_area :content %><br><br>
296
+
297
+ <%= f.label :image, "画像" %><br>
298
+ <%= f.file_field :image %><br><br>
299
+
300
+ <%= f.submit "投稿する" %>
301
+
302
+ </div>
292
303
  <% end %>
293
304
 
305
+ </div>
306
+
294
307
  コード
295
308
  ```
296
309
 

6

説明追加

2020/02/06 05:38

投稿

1234567
1234567

スコア7

title CHANGED
File without changes
body CHANGED
@@ -1,23 +1,25 @@
1
- Ruby on Rauls にて、Twitterのような投稿サービスを作っております。
1
+ 現在Ruby on Rauls にて、Twitterのような投稿サービスを作っております。求職用のポートフォリオとしての制作です。
2
2
 
3
- 現在、入力フォームを「form_tag」から「form_for」へview/postのフォーム部分を入れ替えているところです。その最中、以前は投稿した内容の編集機能は動いていたのですが、機能しなくなってしまいました。
3
+ 元々progateで勉強をしていたため入力フォームを「form_tag」で理解していました。そして今「form_for」or「form_with」へview/postのフォーム部分を入れ替えているところです。その最中、form_tagでは投稿した内容の編集機能は動いていたのですが、機能しなくなってしまいました。
4
4
 
5
5
 
6
6
  エラー文は、この通りです
7
7
  ![イメージ説明](e0a934405b0526b505ee396c84829da7.png)
8
8
 
9
9
 
10
+
11
+
10
12
  自分で試したこととしては、
11
- ・routesをいじ
13
+ ・routesをresourcesにす。(編集できるようになったが、編集した投稿とは別の投稿に変更が反映される等の不具合が起きたため、下記routesの状態に結果戻しました)
12
14
  ・form_forをURLで飛ばす、コントローラ名とアクション名で飛ばす、ルーティングで定義したもので飛ばす
13
15
  などを試みました。
14
16
 
15
17
  しかし、一向に解決できず、、
16
- 自分では解決しかねております。ご教授いただけると幸いです。どうぞ、よろしくお願いします。
17
18
 
18
19
 
19
20
 
20
21
 
22
+
21
23
  ```
22
24
  Rails.application.routes.draw do
23
25
 
@@ -48,8 +50,75 @@
48
50
  コード
49
51
  ```
50
52
 
53
+ ```
54
+ application.html.erb
51
55
 
56
+ <!DOCTYPE html>
57
+ <html>
58
+ <head>
59
+ <title>Read & Memo</title>
60
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
61
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto" >
62
+ <%= csrf_meta_tags %>
63
+ <%= csp_meta_tag %>
64
+
65
+ <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
66
+ <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
67
+ </head>
68
+ <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
69
+
70
+ <body>
71
+ <div class="header">
72
+ <div class="header-logo">
73
+ <%= link_to("「Read & Memo」", "/home/top") %>
74
+ </div>
75
+ <ul class="header-menus">
76
+ <% if @current_user %>
77
+ <li>
78
+ <span class="fa fa-user"></span>
79
+ <%= link_to(@current_user.name, "/users/#{@current_user.id}") %>
80
+ </li>
81
+ <li>
82
+ <span class="fa fa-pencil"></span>
83
+ <%= link_to("投稿する", "/posts/new")%>
84
+ </li>
85
+ <li>
86
+ <span class="fa fa-list"></span>
87
+ <%= link_to("投稿一覧", "/posts/index")%>
88
+ </li>
89
+ <li>
90
+ <span class="fa fa-users"></span>
91
+ <%= link_to("登録者一覧", "/users/index") %>
92
+ </li>
93
+ <li>
94
+ <span class="fa fa-sign-out"></span>
95
+ <%= link_to("ログアウトする", "/logout", {method: :post}) %>
96
+ </li>
97
+ <% else %>
98
+ <li>
99
+ <span class="fa fa-user-secret"></span>
100
+ <%= link_to("簡単ログイン", "/login_guest", {method: :post})%>
101
+ </li>
102
+ <li>
103
+ <span class="fa fa-user-plus"></span>
104
+ <%= link_to("新規登録", "/signnup") %>
105
+ </li>
106
+ <li>
107
+ <span class="fa fa-sign-in"></span>
108
+ <%= link_to("ログインする", "/login") %>
109
+ </li>
110
+ <% end %>
111
+ </ul>
112
+ </div>
113
+
114
+ <%= yield %>
115
+ </body>
116
+
117
+ </html>
52
118
  ```
119
+
120
+
121
+ ```
53
122
  class PostsController < ApplicationController
54
123
  before_action :authenticate_user
55
124
  before_action :ensure_correct_user, {only: [:edit, :update, :destroy]}
@@ -139,8 +208,44 @@
139
208
  ```
140
209
 
141
210
 
211
+ ```
212
+ post/new
142
213
 
214
+
215
+ <div class="post-index">
216
+ <h1>新規投稿</h1>
217
+ <% @post.errors.full_messages.each do |message| %>
218
+ <div class="form-error">
219
+ <%= message %>
220
+ </div>
221
+ <% end %>
222
+
223
+ <div class="post-new-container">
224
+ <%= form_for @post, url: posts_create_path do |f| %>
225
+
226
+ <div class="posts-new-item">
227
+ <%= f.label :title, "タイトル(※必須)" %><br>
228
+ <%= f.text_field :title %><br><br>
229
+
230
+ <%= f.label :content, "感想・まとめ(※必須)" %><br>
231
+ <%= f.text_area :content %><br><br>
232
+
233
+ <%= f.label :image, "画像" %><br>
234
+ <%= f.file_field :image %><br><br>
235
+
236
+ <%= f.submit "投稿する" %>
237
+
238
+ </div>
239
+ <% end %>
240
+
241
+ </div>
242
+ </div>
243
+
244
+ コード
143
245
  ```
246
+
247
+
248
+ ```
144
249
  posts/edit.html.erb
145
250
 
146
251
 
@@ -254,4 +359,27 @@
254
359
  end
255
360
 
256
361
  コード
257
- ```
362
+ ```
363
+
364
+
365
+
366
+
367
+
368
+
369
+ また、routesにてupdate部分を
370
+
371
+ patch 'posts/:id/update' => 'posts#update'
372
+
373
+ のように変えると、下記のエラーが表示されます(その後、patch 'posts/:id' => 'posts#update'に戻してます)。
374
+
375
+ ![![イメージ説明](63c296d0060dd82b74053dadf8dcaba9.png)](22da768d70108bc0be5fcdba79528155.png)
376
+
377
+
378
+
379
+
380
+
381
+ ちなみにform_tagに戻すと投稿の編集も普通に機能するため、余計に理解できない状態にあります。むしろform_tagのままでよければ全て解決なんですが、Rails 5.1 以降は推奨されていないようなので、現場に出たことがない自分としてはそれでいいのか判断しかねています。
382
+
383
+ 色々とおかしな書き方をしてるとは思うのですが、現状として解決したいのは投稿内容の編集をform_forかform_withで機能させることです。
384
+
385
+ 自分では解決しかねております。ご教授いただけると幸いです。どうぞ、よろしくお願いします。

5

説明追加

2020/02/06 05:34

投稿

1234567
1234567

スコア7

title CHANGED
File without changes
body CHANGED
@@ -211,4 +211,47 @@
211
211
  end
212
212
 
213
213
  コード
214
+ ```
215
+
216
+
217
+ ```
218
+
219
+ ActiveRecord::Schema.define(version: 2020_01_18_054634) do
220
+
221
+ create_table "destroys", force: :cascade do |t|
222
+ t.datetime "created_at", precision: 6, null: false
223
+ t.datetime "updated_at", precision: 6, null: false
224
+ end
225
+
226
+ create_table "posts", force: :cascade do |t|
227
+ t.text "content"
228
+ t.datetime "created_at", precision: 6, null: false
229
+ t.datetime "updated_at", precision: 6, null: false
230
+ t.string "image"
231
+ t.integer "user_id"
232
+ t.string "title"
233
+ t.float "rate"
234
+ end
235
+
236
+ create_table "sessions_users", force: :cascade do |t|
237
+ t.string "name"
238
+ t.string "email"
239
+ t.string "password"
240
+ t.string "image"
241
+ t.datetime "created_at", precision: 6, null: false
242
+ t.datetime "updated_at", precision: 6, null: false
243
+ end
244
+
245
+ create_table "users", force: :cascade do |t|
246
+ t.string "name"
247
+ t.string "email"
248
+ t.string "password"
249
+ t.string "image"
250
+ t.datetime "created_at", precision: 6, null: false
251
+ t.datetime "updated_at", precision: 6, null: false
252
+ end
253
+
254
+ end
255
+
256
+ コード
214
257
  ```

4

書式の改善

2020/02/04 04:16

投稿

1234567
1234567

スコア7

title CHANGED
File without changes
body CHANGED
@@ -187,4 +187,28 @@
187
187
  <% end %>
188
188
 
189
189
  コード
190
+ ```
191
+
192
+ ```
193
+ models/post.rb
194
+
195
+ class Post < ApplicationRecord
196
+ mount_uploader :image, ImageUploader
197
+ validates :title, {presence: true}
198
+ validates :content, {presence: true}
199
+ validates :user_id, {presence: true}
200
+
201
+
202
+
203
+
204
+
205
+
206
+ def user
207
+ return User.find_by(id: self.user_id)
208
+ end
209
+
210
+
211
+ end
212
+
213
+ コード
190
214
  ```

3

説明追加

2020/02/03 06:52

投稿

1234567
1234567

スコア7

title CHANGED
File without changes
body CHANGED
@@ -1,3 +1,5 @@
1
+ Ruby on Rauls にて、Twitterのような投稿サービスを作っております。
2
+
1
3
  現在、入力フォームを「form_tag」から「form_for」へview/postのフォーム部分を入れ替えているところです。その最中、以前は投稿した内容の編集機能は動いていたのですが、機能しなくなってしまいました。
2
4
 
3
5
 
@@ -5,11 +7,17 @@
5
7
  ![イメージ説明](e0a934405b0526b505ee396c84829da7.png)
6
8
 
7
9
 
8
- 自分では解決かねております。ご教授いだける幸いです。
10
+ 自分でしたとしては、
11
+ ・routesをいじる
12
+ ・form_forをURLで飛ばす、コントローラ名とアクション名で飛ばす、ルーティングで定義したもので飛ばす
13
+ などを試みました。
9
14
 
15
+ しかし、一向に解決できず、、
16
+ 自分では解決しかねております。ご教授いただけると幸いです。どうぞ、よろしくお願いします。
10
17
 
11
18
 
12
19
 
20
+
13
21
  ```
14
22
  Rails.application.routes.draw do
15
23
 
@@ -179,16 +187,4 @@
179
187
  <% end %>
180
188
 
181
189
  コード
182
- ```
190
+ ```
183
-
184
-
185
-
186
-
187
-
188
-
189
- なお、自分で試したこととしては、
190
- ・routesをいじる
191
- ・form_forをURLで飛ばす、コントローラ名とアクション名で飛ばす、ルーティングで定義したもので飛ばす
192
- などを試みました。
193
-
194
- どうぞ、よろしくお願いします。

2

タイトル変更

2020/02/01 05:32

投稿

1234567
1234567

スコア7

title CHANGED
@@ -1,1 +1,1 @@
1
- rails 投稿内容の編集でエラーが出ています
1
+ NoMethodError in PostsController#update undefined method `user_id' for nil:class [投稿内容の編集でエラーが出ています]
body CHANGED
File without changes

1

書式改善

2020/01/31 05:52

投稿

1234567
1234567

スコア7

title CHANGED
File without changes
body CHANGED
@@ -133,6 +133,9 @@
133
133
 
134
134
 
135
135
  ```
136
+ posts/edit.html.erb
137
+
138
+
136
139
  <div class="post-index">
137
140
  <h1>編集投稿</h1>
138
141
  <% @post.errors.full_messages.each do |message| %>
@@ -176,4 +179,16 @@
176
179
  <% end %>
177
180
 
178
181
  コード
179
- ```
182
+ ```
183
+
184
+
185
+
186
+
187
+
188
+
189
+ なお、自分で試したこととしては、
190
+ ・routesをいじる
191
+ ・form_forをURLで飛ばす、コントローラ名とアクション名で飛ばす、ルーティングで定義したもので飛ばす
192
+ などを試みました。
193
+
194
+ どうぞ、よろしくお願いします。