質問編集履歴

1

具体的な今のコードを載せていなかったので、自分の考えとともに編集しました

2020/10/13 08:52

投稿

yukireonsousi
yukireonsousi

スコア3

test CHANGED
@@ -1 +1 @@
1
- railsで管理者ユーザーが一般ユーザーの荷物を登録する機能を実装したいですが、良い方法ありますか?
1
+ railsで管理者ユーザーが一般ユーザーの荷物を登録する機能を実装したいです
test CHANGED
@@ -1 +1,223 @@
1
+ #現在エラーが出ているファイル
2
+
3
+ baggage_paramsメソッドの記述、newアクションとcreateアクションの記述がbuildを使ったものかもしれないです。
4
+
5
+ ```
6
+
7
+ class Admin::BaggagesController < ApplicationController
8
+
9
+ before_action :if_not_admin
10
+
11
+ before_action :set_baggage, only: [:show, :edit, :destroy]
12
+
13
+ def index
14
+
15
+ if current_user.admin?
16
+
17
+ # @baggages = Baggage.search(params[:search])
18
+
19
+ @search = User.ransack(params[:q]) #:qは入力したクエリのq
20
+
21
+ @users = @search.result
22
+
23
+
24
+
25
+ end
26
+
27
+ end
28
+
29
+
30
+
31
+ def new
32
+
33
+ if current_user.admin?
34
+
35
+ @baggage = Baggage.new
36
+
37
+
38
+
39
+ end
40
+
41
+ end
42
+
43
+
44
+
45
+ def create
46
+
47
+ # @baggage = current_user.baggages.build(baggage_params)
48
+
49
+ # @baggage = Baggage.new.(user_id: @user.id)
50
+
51
+ @baggage = Baggage.new(baggage_params)<--この、行を指してエラーが出ている状態です
52
+
53
+ if @baggage.save
54
+
55
+
56
+
57
+ redirect_to pages_path(@baggage)
58
+
59
+ else
60
+
61
+ render :new
62
+
63
+ end
64
+
65
+ end
66
+
67
+
68
+
69
+ def edit
70
+
71
+ end
72
+
73
+
74
+
75
+ def destroy
76
+
77
+ end
78
+
79
+
80
+
81
+ def show
82
+
83
+ end
84
+
85
+
86
+
87
+
88
+
89
+
90
+
91
+ private
92
+
93
+
94
+
95
+
96
+
97
+ def if_not_admin
98
+
99
+ redirect_to root_path unless current_user.admin?#管理者ユーザー以外が特定のアクションを実行しようとした場合トップページにリダイレクトされる
100
+
101
+ end
102
+
103
+
104
+
105
+ def set_baggage
106
+
107
+ @baggage = Baggage.find(params[:id])#edit, show, destroy などのアクションで使用する変数をセットします。
108
+
109
+ end
110
+
111
+
112
+
113
+ def baggage_params
114
+
115
+ params.require(:baggage).permit(
116
+
117
+ :type,:storage_period, :code, ).merge(user_id:[@q])
118
+
119
+ end
120
+
121
+
122
+
123
+ end
124
+
125
+
126
+
127
+ ```
128
+
129
+ #遷移元のファイル(admin/baggages/index.html.haml)
130
+
131
+
132
+
133
+ ```
134
+
135
+ = search_form_for @search, url: admin_baggages_url do |f|
136
+
137
+ = f.label :name_cont, "名前を入力してください"
138
+
139
+ = f.search_field :name_cont
140
+
141
+ = f.submit "検索"
142
+
143
+
144
+
145
+ .table
146
+
147
+ .thead
148
+
149
+ %tr
150
+
151
+ %th= sort_link(@search, :name)#resultさせてる部分とリンク
152
+
153
+ %th= sort_link(@search, :address)
154
+
155
+ .tbody
156
+
157
+ - @users.each do |user|#controllerの「@users = @search.result」検索したものを"返す"
158
+
159
+ %tr
160
+
161
+ -# %td= link_to user.name, new_admin_baggage_url(@q, :'q[user_id_eq]' => "#{user.id}")
162
+
163
+ %td= user.name
164
+
165
+ %td= user.address
166
+
167
+ %td= link_to "New", new_admin_baggage_url(@q, :'q[user_id_eq]' => "#{user.id}")
168
+
169
+ ```
170
+
171
+ #遷移先のファイル(admin/baggages/new.html.haml)
172
+
173
+ = f.hidden_field :user_id, :value => @q(params[:id])の行でuser_idに値が渡せておらず、空で送信されてます
174
+
175
+ ```
176
+
177
+ .wrapper
178
+
179
+
180
+
181
+ .disply
182
+
183
+
184
+
185
+ = form_for @baggage ,url: admin_baggages_path do |f|
186
+
187
+ .baggage
188
+
189
+ .baggage__box
190
+
191
+ %span
192
+
193
+ 荷物の種類
194
+
195
+ = f.select :type, [["なまもの", "なまもの"], ["チルド", "チルド"], ["冷凍", "冷凍"], ["その他", "その他"]], include_blank: "選択して下さい"
196
+
197
+ .baggage__box
198
+
199
+ %span
200
+
201
+ 保管期限
202
+
203
+ = f.text_field :storage_period, class: "baggage_text" , placeholder: '例)7'
204
+
205
+ %span 日
206
+
207
+ .baggage__box
208
+
209
+ %span
210
+
211
+ 追跡番号
212
+
213
+ = f.text_field :code, class: "baggage_text", placeholder: '123456789012'
214
+
215
+ = f.hidden_field :user_id, :value => @q(params[:id])<--この部分で値が渡せていません
216
+
217
+ = f.submit 'SEND', class: "baggage__send"
218
+
219
+
220
+
221
+ ```
222
+
1
- 検索した一般ユザーnewペジに入るには如何したものかと行ったところです
223
+ 明らかに実装出来ていない所はコ横に <-- のマクを付けておきました