由于我最终使用的是csv方法而不是json方法,所以我认为如果有一天其他人可能遇到相同的问题,更改问题名称并删除带有json的部分可能是个好主意。
更新:我尝试使用this作为导出数据的方法。
在我的控制器中,我有以下内容:
def profile
@user = User.find(params[:id])
@user_posts = @user.posts.order('created_at DESC')
respond_to do |format|
format.html
format.csv { send_data @user.csv, filename: "userinfo-#{Date.today}.csv" }
end
结束
在我看来:
<p><%= link_to("Generate Report", user_path(@user, format: :csv), class: "btn btn-success",) %></p>
在我的user.rb中:
def csv
CSV.generate do |csv|
csv << column_names
all.each do |item|
csv << item.attributes.values_at(*column_names)
end
end
end
更新2:设法自己修复它,我在控制器中使用了错误的csv方法。替换为以下内容:
def csv
CSV.generate do |csv|
csv << %w{ user_id user_username user_email }
csv << [ self.id, self.username, self.email]
end
end
像魅力一样工作。
最诚挚的问候