0

我创建了一些脚手架来管理将按索引组织的音频剪辑:

rails generate scaffold Clips name:string

我将所有剪辑上传到我的文件服务器,并使用自动生成的 rails 控制面板将它们添加到数据库中。

现在,我需要能够访问它们,所以我在模型中添加了一个 url 方法:

class Clip < ActiveRecord::Base
    def self.url
        "http://example.file_server.com/audio-clips/#{@id}.mp3"
    end
end

现在,在控制器中运行站点本身,调用此方法看起来像输出除 id 之外的所有内容......

class TwilioController < ApplicationController
    def index

        Twilio::TwiML::Response.new do |r|
            @response = r.play Clip.where(name: "root").url
        end

        render :xml => @response
    end
end

输出:

<Response>
<play>http://example.file_server.com/audio-clips/.mp3</play>
</Response>

我怎样才能让这个东西插入id到 URL 字符串中?

4

1 回答 1

1

有几件事,一个,你定义urlself.url,这使它成为一个类级别的方法。我猜你不想那样做。

另外,不要id用作实例变量,使用其生成的访问器方法:

class Clip < ActiveRecord::Base
  def url
    "http://example.file_server.com/audio-clips/#{id}.mp3"
  end
end

此外,您在调用urlwhere立即调用,这将返回一个关系。您需要执行以下操作:

Twilio::TwiML::Response.new do |r|
  @response = r.play Clip.where(name: "root").first.url
end

但这更多地取决于你在做什么。如果您期望有多个结果,则必须以不同的方式处理它。还要注意它可能不会返回任何结果......

于 2013-10-16T20:08:19.703 回答