我创建了一些脚手架来管理将按索引组织的音频剪辑:
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字符串中?
答案 0 :(得分:1)
一些事情,一个,您将url
定义为self.url
,这使它成为一个类级方法。我猜你不想这样做。
另外,不要将id
用作实例变量,请使用其生成的访问器方法:
class Clip < ActiveRecord::Base
def url
"http://example.file_server.com/audio-clips/#{id}.mp3"
end
end
此外,您在url
调用之后立即调用where
,这会返回一个关系。你会想要做的事情:
Twilio::TwiML::Response.new do |r|
@response = r.play Clip.where(name: "root").first.url
end
但这更多地取决于你在做什么。如果您希望有多个结果,则必须以不同方式处理它。还要注意它可能没有结果......