Ruby on rails 如何在RubyonRails中使用jquery获取资产路径

Ruby on rails 如何在RubyonRails中使用jquery获取资产路径,ruby-on-rails,ruby,assets,Ruby On Rails,Ruby,Assets,我在RubyonRails应用程序中使用文件上传。当文件上传时,我想为其他人创建链接,以便他们也可以下载该文件。我在文件附件的资产文件夹中有一个名为job\u attachments的文件夹。我想知道如何使用jQuery获取job\u附件的路径 我在控制器中执行类似的操作: def uploadattachment if(params[:job][:uploaded_data]) uploaded_io=params[:job][:uploaded_data]

我在RubyonRails应用程序中使用文件上传。当文件上传时,我想为其他人创建链接,以便他们也可以下载该文件。我在文件附件的资产文件夹中有一个名为
job\u attachments
的文件夹。我想知道如何使用jQuery获取
job\u附件的路径

我在控制器中执行类似的操作:

  def uploadattachment
    if(params[:job][:uploaded_data])
        uploaded_io=params[:job][:uploaded_data]
        File.open(Rails.root.join('app/assets', 'job_attachments', uploaded_io.original_filename), 'wb') do |f| 
              f.write(uploaded_io.read) 
        end

    respond_to do |format|
      format.json {render :layout=>false , :json => uploaded_io.original_filename}      
    end
end

结束

您可能不想将上载的内容放入资产文件夹。资产用于创建属于应用程序一部分的内容。此外,
app/assets
客户端无法直接访问。我想你希望人们能够下载这些文件

在public下创建另一个文件夹(“uploads”),并将文件放在那里

要在jQuery中获取路径,只需在上传文件时从控制器返回路径即可。您可能希望转换散列,而不是字符串,因为在jQuery中这更容易处理

def uploadattachment
  if(params[:job][:uploaded_data])
      uploaded_io=params[:job][:uploaded_data]
      File.open(Rails.root.join('public', 'uploads', 'job_attachments', uploaded_io.original_filename), 'wb') do |f| 
            f.write(uploaded_io.read) 
      end

      respond_to do |format|
        format.json {render :layout=>false , :json => {:path => File.join('uploads', uploaded_io.original_filename}}      
      end
  end
end

文件在jobs_附件文件夹中完美上传。为什么我需要上传到公共目录?更新答案<代码>应用程序/资产
将在开发中工作,但在生产模式下,您无法直接访问这些文件。它们被预编译成
公共/资产
。部署后添加的任何内容都不会发生这种情况。