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

質問編集履歴

3

情報の追加

2020/02/02 10:46

投稿

hidayoshi231
hidayoshi231

スコア6

title CHANGED
File without changes
body CHANGED
@@ -79,6 +79,8 @@
79
79
 
80
80
  というエラーが発生します。avatarはUserモデルに与えている属性で、ユーザーのプロフィール画像のstringを持ちます。Imagepostモデルは投稿するコンテンツ(text)と画像の名前(string)を属性に持ちます。
81
81
 
82
+ 画像の管理はcarrierwaveとmini_magickを使用しています。
83
+
82
84
  デバッグしたところ、```if @imagepost.save```の部分に問題があることがわかり色々試したのですが、解決しません。
83
85
 
84
86
  current_userはavatar属性を持っていますが、ここでsaveするのは@imagepostなのでavatarは関係ないはずです。それなのになぜimagepostにもavatarが必要みたいなエラーがでるのでしょうか?
@@ -97,6 +99,8 @@
97
99
  ### 補足情報(FW/ツールのバージョンなど)
98
100
 
99
101
  Rails5.1.6
102
+ carrierwave
103
+ mini_magick
100
104
 
101
105
  ###createを実行するview側のファイル
102
106
 

2

ギットハブのリンクを追加しました

2020/02/02 10:46

投稿

hidayoshi231
hidayoshi231

スコア6

title CHANGED
File without changes
body CHANGED
@@ -134,4 +134,10 @@
134
134
  }
135
135
  });
136
136
  </script>
137
- ```
137
+ ```
138
+
139
+ ###2020/02/02追記
140
+
141
+ 現在エラーがでているアプリはGithubで管理しています。 ここにコードを片っ端から貼るよりも、リンクを貼ったほうが早いと判断しました。
142
+
143
+ [現在制作中のアプリのレポジトリ](https://github.com/hidayoshi/Instravel)

1

ファイルを追加しました

2020/02/02 10:43

投稿

hidayoshi231
hidayoshi231

スコア6

title CHANGED
File without changes
body CHANGED
@@ -47,11 +47,34 @@
47
47
 
48
48
  ```
49
49
 
50
- このコードを実行すると
50
+ このコードを実行し、フォームに文字を入力した状態で新しい投稿を作成しようとすると
51
51
 
52
52
  ```
53
53
  ActiveModel::MissingAttributeError in ImagepostsController#create
54
54
  can't write unknown attribute `avatar`
55
+ Extracted source (around line #11):
56
+
57
+ 9 def create
58
+ 10 @imagepost = current_user.imageposts.build(imagepost_params)
59
+ 11 if @imagepost.save
60
+ 12 flash[:success] = 'Imagepost created!'
61
+ 13 redirect_to root_url
62
+ 14 else
63
+
64
+ Rails.root: /Users/Toshiki/Desktop/portfolio/instravel
65
+
66
+ Application Trace | Framework Trace | Full Trace
67
+ app/controllers/imageposts_controller.rb:11:in `create'
68
+ Request
69
+ Parameters:
70
+
71
+ {"utf8"=>"✓", "authenticity_token"=>"DaWd/yEYD6uQGppfdGgW99PSyqcKgxDkWQOVlcW+ZX4CU/cs3g/N52uGuK0cm3rJDAj7DTnPs4Ipt5Q7ZiBoEQ==", "imagepost"=>{"content"=>"a"}, "commit"=>"Post"}
72
+ Toggle session dump
73
+ Toggle env dump
74
+ Response
75
+ Headers:
76
+
77
+ None
55
78
  ```
56
79
 
57
80
  というエラーが発生します。avatarはUserモデルに与えている属性で、ユーザーのプロフィール画像のstringを持ちます。Imagepostモデルは投稿するコンテンツ(text)と画像の名前(string)を属性に持ちます。
@@ -64,8 +87,51 @@
64
87
 
65
88
 
66
89
  ### 試したこと
67
- ``` attr_accessor :avatar```で属性を与えてみたがダメだった。
68
90
 
91
+ ```
92
+ attr_accessor :avatar
93
+ ```
94
+ でImagepostコントローラーに属性を与えてみたがダメだった。
95
+
96
+
69
97
  ### 補足情報(FW/ツールのバージョンなど)
70
98
 
71
- Rails5.1.6
99
+ Rails5.1.6
100
+
101
+ ###createを実行するview側のファイル
102
+
103
+ form_withで送信します。
104
+
105
+
106
+ ```_imagepost_form.html.erb
107
+ <%= form_with model: @imagepost, local: true do |f| %>
108
+ <div class="card mb-3">
109
+ <div class="card-header">
110
+ <span class="font-weight-bold">
111
+ HOME
112
+ </span>
113
+ </div>
114
+ <div class="card-body">
115
+ <p class="card-text">
116
+ <%= render 'shared/error_messages', object: f.object %>
117
+ <div class="form-group">
118
+ <%= f.text_area :content, placeholder: "Compose new imagepost...",
119
+ class: "form-control w-100" %>
120
+ </div>
121
+ <div class="form-group">
122
+ <%= f.file_field :picture, class: "form-control-file" %>
123
+ </div>
124
+ </p>
125
+ <%= f.submit "Post", class: "btn btn-primary" %>
126
+ </div>
127
+ </div>
128
+ <% end %>
129
+ <script type="text/javascript">
130
+ $('#imagepost_picture').bind('change', function() {
131
+ var size_in_megabytes = this.files[0].size/1024/1024;
132
+ if (size_in_megabytes > 5) {
133
+ alert('Maximum file size is 5MB. Please choose a smaller file.');
134
+ }
135
+ });
136
+ </script>
137
+ ```