首页 > 解决方案 > 下载 CSV 会下载所有文件,需要它来下载特定文件

问题描述

我在将值下载到 CSV 文件时遇到了一些问题。我有两个模型,市区和属性。市中心有很多房产。每个物业都有一个市中心。我遇到的问题是,通过我所做的,我已经能够下载所有属性,这很酷!但我正在苦苦挣扎的是只下载市中心拥有的房产。

我最初必须下载我拥有的所有属性

在我的属性控制器中:

  def index
    @properties = Property.all

    respond_to do |format|
      format.html
      format.csv { send_data @properties.to_csv }
    end
  end

在我的属性模型中

  def self.to_csv
    attributes = %w(id name owner_first_name created_at)
    CSV.generate(headers: true) do |csv|
      csv << attributes

      all.each do |property|
        csv << property.attributes.values_at(*attributes)
      end
    end
  end

然后在我看来我有。

= link_to "download CSV", downtown_properties_path(:format => :csv), class: "button"  

所以这又是可行的,但是由于我的关联,我可以添加链接的视图只能是downtowns/1/properties基于我将代码放入其中的视图,index这实际上是有意义的

我尝试了一些类似的东西

@download_properties = Property.where(downtown: @downtown_id)

respond_to do |format|
  format.html
  format.csv { send_data @download_properties.to_csv }
end

然而@downtown_id,在这一点上没有定义。所以我认为downtown模型中的解决方案更好?

如果有人对此有任何想法并能够帮助我,我将不胜感激!

标签: ruby-on-railsrubycsv

解决方案


不应该是:

@download_properties = Property.where(downtown: params[:id])

或者

@download_properties = Downtown.find(params[:id]).properties

推荐阅读