我正在使用带有ruby 2的rails 4.我试图创建youtube_uri变量以将其传递给模型以提取v变量并获得长度的视频。它应该像模型中的临时
我做了什么: def youtube_uri=(input_data)
puts "youtube nuoroda imesta"
query_string = URI.parse(input_data).query
parameters = Hash[URI.decode_www_form(query_string)]
self.youtube = parameters['v']
url = "https://gdata.youtube.com/feeds/api/videos/#{self.youtube}?v=2"
data = RestClient.get url
data = XmlSimple.xml_in(data, { 'KeyAttr' => 'name' })
self.youtube_lenght = data['group'][0]['duration'][0]['seconds']
end
所以在视图中我应该可以使用:youtube_uri,但它会抛出一个错误:
undefined method `youtube_uri' for #<News:0x007f9cd207b838>
<%= f.text_field :youtube_uri %>
我错过了什么?
答案 0 :(得分:1)
在模型中将youtube_uri
声明为attr_reader
:
class News < AR::Base
attr_reader :youtube_uri
...
end
这将创建一个getter youtube_uri
。你所做的只是定义了setter,但当你用它时:
<%= f.text_field :youtube_uri %>
表单助手正在寻找方法youtube_uri
。