rails临时变量传递给模型进行处理

时间:2014-02-03 08:25:07

标签: ruby-on-rails ruby youtube

我正在使用带有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 %>

我错过了什么?

1 个答案:

答案 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