gpt4 book ai didi

ruby-on-rails - # 的未定义方法 `send_file'

转载 作者:行者123 更新时间:2023-12-05 09:24:28 24 4
gpt4 key购买 nike

我正在尝试创建一个链接以从文件系统下载文件。为此,我在“license_helper.rb”文件中定义了以下内容:

def license_download_link(license, link_text = nil)
if link_text.blank?
link_text = image_tag("download_icon.png", :border => 0, :width => 32, :height =>32, :alt => 'Download License', :title => 'Download License')
end

licenseFileId = license.asset.serial_number
send_file '#{licenseFileId}license.xml', :type => "application/xml", :filename => "#{licenseFileId}license.xml"
#send_file ' "#{licenseFileId}license.xml" ', :disposition => 'inline'
#send_file("#{licenseFileId}license.xml", :type => :xml)
#link_to link_text, '#{"C:\\Entitlement\\trunk\\entitlement_site\\entitlement\\25license.xml"}'
end

我的“ View ”只是调用这个辅助类:

<td><%= license_download_link(license, ' ') %></td>

当我尝试查看页面时,收到以下错误消息:

undefined method `send_file' for #<ActionView::Base:0x5fb3650>

如您所见,我尝试了多种调用“send_file”的方法,但总是得到相同的错误消息。任何帮助将非常感激,谢谢你的时间,问候,--- 阿杰

最佳答案

您需要从 Controller 操作而不是您的 View 调用 send_file。调用 Controller 操作以响应用户单击指向它的链接。

在 View 中,您只需要一个指向 Controller 操作的链接。


细节将取决于您的具体应用,但这里是各部分如何组合在一起的粗略概述

生成一个 Controller :

class LicenceController < ApplicationController
def download
# look up the licence and then use send_file
end
end

然后您可以编辑 config/routes.rb 为许可证下载创建一个友好的 URL,例如

match 'licences/:id/download' => 'licence#download', :as => 'licence_download'

这意味着 licences/xyz/download 形式的 URL 将调用您的 download Controller 方法,而 licence_download_url 辅助方法将自动为您创建。

然后在你看来你可以做

<%= link_to 'Download your licence', licence_download_url(licence) %>

如果您想创建一个辅助方法来生成带有下载图标的链接,您也可以这样做。

如果您是 Rails 的新手并且正在为如何将应用程序的各个部分组合在一起而苦苦挣扎,那么 Agile Web Development with Rails会是一本很好的书。

关于ruby-on-rails - #<ActionView::Base:0x5fb3650> 的未定义方法 `send_file',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12389922/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com