Ruby on rails 4 回形针更改URL/路径
我使用的是Rails4Ruby2.1.1 我需要更改我的:url、:path、:default,以便可以访问控制器目录中的example-data.csv文件。目前,它正在将我的example_data.csv文件存储在Ruby on rails 4 回形针更改URL/路径,ruby-on-rails-4,Ruby On Rails 4,我使用的是Rails4Ruby2.1.1 我需要更改我的:url、:path、:default,以便可以访问控制器目录中的example-data.csv文件。目前,它正在将我的example_data.csv文件存储在public/origin/example_data.csv中。 但我希望我的示例_data.csv文件保存在/controllers/original目录中 这就是我目前所拥有的 has_attached_file : csvdata, :url => "/contro
public/origin/example_data.csv
中。
但我希望我的示例_data.csv文件保存在/controllers/original目录中
这就是我目前所拥有的
has_attached_file :
csvdata, :url => "/controllers/original/:style/:basename.:extension",
:path => ":rails_root/controllers/original/:style/:basename.:extension",
:default_url => "/controllers/original/example_data.csv"
当我运行代码时,它不会将我的代码放在控制器目录中。
回形针
允许您在首选位置上载文件。您可以根据需要修改其选项,如:url
,:path
,:default\u url
在我们进一步讨论之前,让我向您介绍一下这些选项的用途:
:url - The full URL of where the attachment is publicly accessible.
:path - The files that are assigned as attachments are, by default, placed in the directory specified by this option.
:default_url - The URL that will be returned if there is no attachment assigned.
:styles - A hash of thumbnail styles with geometries. If you need copies of uploaded files with particular dimensions then specify them here.
让我们在这里采取一步一步的方法: 您的第一个要求如下: 我需要更改我的:url、:path、:default\u url,以便可以访问控制器目录中的example-data.csv文件。 是的,这是可能的。如下所示的当前配置可以正常工作,无需任何更改
has_attached_file :csvdata,
:url => "/controllers/original/:style/:basename.:extension",
:path => ":rails_root/controllers/original/:style/:basename.:extension",
:default_url => "/controllers/original/example_data.csv"
但这里有一些我想强调的问题。通过上述设置,无论何时上载文件,它都将存储在应用程序文件夹/controllers/original/original目录下。路径/original的最后一部分是由于在:path
选项中指定了/:style
。由于您没有为附件指定任何:样式
选项,因此只会创建默认样式,即原始
。
请注意控制器文件夹位于应用程序根级别,这是一个不可公开访问的文件夹
只有在public文件夹(及其子文件夹)下上载的文件才能通过web浏览器访问。如果您不打算在视图中的任何位置显示上载的文件和/或只需要进行一些后台处理,则当前配置不需要任何更改。它现在可以正常工作了
如果这是您打算实现的,则无需采取进一步行动
但是如果您计划在web应用程序中显示或访问上载的文件,则需要将其放置在可通过浏览器访问的公用
文件夹中。在这种情况下,您的代码将需要一些更改
## Update current configuration as below
has_attached_file :csvdata,
:url => "/controllers/:style/:basename.:extension",
:path => ":rails_root/public/controllers/:style/:basename.:extension",
:default_url => "/controllers/:style/example_data.csv"
注意:我从路径中删除了/original
,因为:style
将创建original
文件夹。
否则,文件夹将是/controllers/original/original/。
通过上述设置,无论何时上载文件,它都将存储在应用程序文件夹/public/controllers/original目录下。您可以在视图中通过调用@model\u instance.csvdata.url
轻松访问上传的文件。例如,根据您的问题,您正在上载一个名为example\u data.csv
的文件,然后在您的视图中,您可以将其用作:
## Replace @model_instance with Model instance (contains `csvdata` attachment)
<%= link_to "Example Data", @model_instance.csvdata.url %>
最好在配置中指定:default\u url
选项。这样做的原因是,如果用户在创建记录时没有上载文件,但后来尝试访问该记录的上载文件
,则他们将被定向到默认url中设置的链接。另外,请注意,对于此特定记录,所有附件
相关列都将设置为nil
此外,我还感到困惑当您要在应用程序中上载相同的文件时,为什么您希望默认的\u url指向example\u data.csv
。标准方法是使用名为missing.csv
或missing.png
的默认文件,该文件与上载的文件不关联。请记住将missing.csv
或missing.png
放入/controllers/original/
文件夹中,即:默认url
路径。否则,单击链接时会出现错误。请查看我的问题?
<a href="/controllers/original/example_data.csv?12345678">Example Data</a>
:default_url => "/controllers/:style/example_data.csv"