質問編集履歴
2
変更点
title
CHANGED
File without changes
|
body
CHANGED
@@ -103,4 +103,38 @@
|
|
103
103
|
end
|
104
104
|
end
|
105
105
|
|
106
|
+
```
|
107
|
+
|
108
|
+
```
|
109
|
+
farmers_Controller.rb
|
110
|
+
class FarmersController < ApplicationController
|
111
|
+
|
112
|
+
def new
|
113
|
+
@farmer_resister = Farmer.new
|
114
|
+
@farmer_resister.farmer_images.build
|
115
|
+
end
|
116
|
+
|
117
|
+
def create
|
118
|
+
@farmer_resister = Farmer.new(farmer_params)
|
119
|
+
if @farmer_resister.save!
|
120
|
+
farmer_log_in @farmer_resister
|
121
|
+
flash.now[:success] = "農家の登録が完了しました。"
|
122
|
+
redirect_to farmer_path(@farmer_resister.id)
|
123
|
+
else
|
124
|
+
flash.now[:danger] = "農家登録に失敗しました。お手数ですが、もう一度登録しなおしてください。"
|
125
|
+
render "new"
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
|
130
|
+
private
|
131
|
+
|
132
|
+
def farmer_params
|
133
|
+
params.require(:farmer).permit(:name, :email, :tel, :postal_code, :prefecture, :address, :comment, :password, :password_confirmation, farmer_images_attributes:
|
134
|
+
[
|
135
|
+
:id, :farmer_logo, :farmer_image
|
136
|
+
])
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
106
140
|
```
|
1
追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
|
10
10
|
### 発生している問題・エラーメッセージ
|
11
11
|
```
|
12
|
-
|
12
|
+
Validation failed: Prefecture can't be blank, Address can't be blank.
|
13
13
|
|
14
14
|
```
|
15
15
|
|
@@ -20,11 +20,26 @@
|
|
20
20
|
``onKeyUp:"AjaxZip3.zip2addr(this,'','prefecture','address');"``を外して、都道府県や住所も全て入力すれば
|
21
21
|
しっかりとDBへは登録されます。
|
22
22
|
|
23
|
+
```
|
24
|
+
ログ
|
23
25
|
|
26
|
+
Parameters: {"utf8"=>"✓", "authenticity_token"=>"M7JNCtF75uixj6s6kw8pZk0ChuDN4N8Ev8f1I0mYt0x75HyDOi1fG/EWf36RT8y2NKrxgMh5J7+JnLNeh0SqRA==", "farmer"=>{"name"=>"XXX農園", "email"=>"ccc@ccc.com", "tel"=>"00000000000", "postal_code"=>"0608588", "comment"=>"テストです。", "farmer_images_attributes"=>{"0"=>{"farmer_logo"=>#<ActionDispatch::Http::UploadedFile:0x00007fd6e90f76a8 @tempfile=#<Tempfile:/var/folders/19/8dw27p954zv9p2k_90hvh3ww0000gn/T/RackMultipart20201025-19521-ckzet6.png>, @original_filename="lemon.png", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"farmer[farmer_images_attributes][0][farmer_logo]\"; filename=\"lemon.png\"\r\nContent-Type: image/png\r\n">, "farmer_image"=>#<ActionDispatch::Http::UploadedFile:0x00007fd6e90f7360 @tempfile=#<Tempfile:/var/folders/19/8dw27p954zv9p2k_90hvh3ww0000gn/T/RackMultipart20201025-19521-h9zj8i.png>, @original_filename="apple.png", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"farmer[farmer_images_attributes][0][farmer_image]\"; filename=\"apple.png\"\r\nContent-Type: image/png\r\n">}}, "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "prefecture"=>"北海道", "address"=>"札幌市中央区", "commit"=>"登録"}
|
27
|
+
|
28
|
+
(0.1ms) begin transaction
|
29
|
+
↳ app/controllers/farmers_controller.rb:10
|
30
|
+
Farmer Exists (0.3ms) SELECT 1 AS one FROM "farmers" WHERE LOWER("farmers"."email") = LOWER(?) LIMIT ? [["email", "ccc@ccc.com"], ["LIMIT", 1]]
|
31
|
+
↳ app/controllers/farmers_controller.rb:10
|
32
|
+
(0.2ms) rollback transaction
|
33
|
+
↳ app/controllers/farmers_controller.rb:10
|
34
|
+
Completed 422 Unprocessable Entity in 142ms (ActiveRecord: 2.2ms)
|
35
|
+
|
36
|
+
```
|
37
|
+
|
38
|
+
|
24
39
|
### 該当のソースコード
|
25
40
|
|
26
41
|
```
|
27
|
-
(views/
|
42
|
+
(views/farmers/new.html.erb)一部記載
|
28
43
|
ここで登録したい商品の情報を記入(下記はタグを複数選択可)
|
29
44
|
<%= form_for @product_resister, html: {class: "new_product"} do |f| %>
|
30
45
|
<%= f.label :postal_code, "郵便番号", class:"form_field" %>
|
@@ -37,4 +52,55 @@
|
|
37
52
|
<%= f.text_field :address, class: 'form_area', required:"required" %>
|
38
53
|
<%= f.submit "登録", class:"resister_btn"%>
|
39
54
|
<% end %>
|
55
|
+
```
|
56
|
+
|
57
|
+
```
|
58
|
+
(farmer.rb)
|
59
|
+
class Farmer < ApplicationRecord
|
60
|
+
attr_accessor :remember_token
|
61
|
+
before_save {self.email = email.downcase }
|
62
|
+
|
63
|
+
validates :name, presence: true, length: {maximum: 50}
|
64
|
+
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(.[a-z\d\-]+)*.[a-z]+\z/i
|
65
|
+
validates :email, presence: true,
|
66
|
+
length: {maximum: 255},
|
67
|
+
format: {with: VALID_EMAIL_REGEX},
|
68
|
+
uniqueness: {case_sensitive: false}
|
69
|
+
has_secure_password
|
70
|
+
validates :password, presence: true, length: {minimum: 6}, allow_nil:true
|
71
|
+
validates :tel, presence: true, length: {in: 10..11}
|
72
|
+
validates :postal_code, presence: true
|
73
|
+
validates :prefecture, presence: true
|
74
|
+
validates :address, presence: true
|
75
|
+
validates :comment, presence: true
|
76
|
+
|
77
|
+
has_many :products, dependent: :destroy
|
78
|
+
|
79
|
+
has_many :farmer_images, dependent: :destroy
|
80
|
+
accepts_nested_attributes_for :farmer_images
|
81
|
+
|
82
|
+
def Farmer.digest(string)
|
83
|
+
cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST : BCrypt::Engine.cost
|
84
|
+
BCrypt::Password.create(string, cost: cost)
|
85
|
+
end
|
86
|
+
|
87
|
+
def Farmer.new_token
|
88
|
+
SecureRandom.urlsafe_base64
|
89
|
+
end
|
90
|
+
|
91
|
+
def remember
|
92
|
+
self.remember_token = Farmer.new_token
|
93
|
+
update_attribute(:remember_digest, Farmer.digest(remember_token))
|
94
|
+
end
|
95
|
+
|
96
|
+
def authenticated?(remember_token)
|
97
|
+
return false if remember_digest.nil?
|
98
|
+
BCrypt::Password.new(remember_digest).is_password?(remember_token)
|
99
|
+
end
|
100
|
+
|
101
|
+
def forget
|
102
|
+
update_attribute(:remember_digest, nil)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
40
106
|
```
|