質問編集履歴

1

やったことの追加

2020/08/31 10:50

投稿

GenkiSugiyama
GenkiSugiyama

スコア86

test CHANGED
File without changes
test CHANGED
@@ -56,6 +56,38 @@
56
56
 
57
57
 
58
58
 
59
+ usersのindexのビューにエクスポートボタンを設置
60
+
61
+
62
+
63
+ app/controllers/users_controller.rb
64
+
65
+
66
+
67
+ ```ここに言語を入力
68
+
69
+ def index
70
+
71
+ @users = User.all
72
+
73
+
74
+
75
+ respond_to do |format|
76
+
77
+ format.html
78
+
79
+ format.csv { send_data @users.generate_csv, filename: "users-#{Time.zone.now.strftime("%Y%m%d%S")}.csv" }
80
+
81
+ end
82
+
83
+ end
84
+
85
+ ```
86
+
87
+
88
+
89
+
90
+
59
91
  【テーブル情報】
60
92
 
61
93
  ```ここに言語を入力
@@ -85,3 +117,51 @@
85
117
  end
86
118
 
87
119
  ```
120
+
121
+
122
+
123
+ ##試してみたこと
124
+
125
+ app/models/user.rb内の`self.attributes`内で属性名を取り出すのではなく値を直接取り出して、0落ちしてしまう値に対して[こちら](https://qiita.com/shunichi_com/items/bfcd30a10aa1bd5ce4c1)で紹介されている0落ち対策を行おうとしましたが、**NoMethodError**となりました。
126
+
127
+
128
+
129
+ app/models/user.rb
130
+
131
+ ```ここに言語を入力
132
+
133
+ def self.csv_attributes
134
+
135
+ [self.name, %Q{="#{self.tel}"}, self.email, %Q{="#{self.post_code}"}, self.prefectures, %Q{="#{self.address_1}"}, %Q{="#{self.address_2}"}, %Q{="#{self.room_number}"}, self.created_at_date, self.updated_at_date, self.orders_counts, self.order_rackets_counts, self.order_amounts]
136
+
137
+ end
138
+
139
+
140
+
141
+ def self.generate_csv
142
+
143
+ csv_columns = ["名前", "電話番号", "メールアドレス", "郵便番号", "都道府県", "住所1", "住所2", "住所3", "登録日時", "最終更新日時"]
144
+
145
+ CSV.generate(encoding: Encoding::SJIS, row_sep: "\r\n", force_quotes: true) do |csv|
146
+
147
+ csv << csv_columns
148
+
149
+ all.each do |user|
150
+
151
+ # csv << csv_attributes.map{ |attr| user.send(attr) }
152
+
153
+         csv << csv_attributes
154
+
155
+ end
156
+
157
+ end
158
+
159
+ end
160
+
161
+ ```
162
+
163
+
164
+
165
+ 【エラー画面】
166
+
167
+ ![イメージ説明](8a841a5ac6c4d69b83eec3fb658b2252.png)