Rails form_for附加字段

时间:2012-06-29 20:19:07

标签: ruby-on-rails

我需要用户在表单中输入一个URL。但是,URL不是我的数据库中的列。我收到以下表格的错误。

我有一个表单来创建视频(new.html.haml)

= form_for @video do |f|
  .field
  = f.label :title
  = f.text_field :title
.field
  = f.label :description
  = f.text_area :description
.field
  = f.label :url
  = f.text_field :url
.field
  Provider
  %br
  = radio_button :video, :provider, 'vimeo'
  = f.label :provider, 'Vimeo', :value => 'vimeo'
  %br
  = radio_button :video, :provider, 'youtube' 
  = f.label :provider, 'Youtube', :value => 'youtube'
%br
.actions
  = f.submit "Add video"

Rails抱怨URL不是URL中的列是未知的方法或变量。

我想做什么

基本上,我需要获取用户添加的视频的网址,以及视频标题,说明和提供商。

所有字段在数据库中都有一列,只有URL没有。

然后我需要格式化URL并在其上调用一些方法。它将创建一些新的输出,我将存储数据库。

因此,从网址中,我得到provider_video_idthumb这些是数据库列。

**如何在没有专用数据库列的情况下在表单中收到用户URL?

3 个答案:

答案 0 :(得分:1)

您需要使用虚拟属性。

在模型中输入以下内容:

def url=(url)
  @url = url
end

def url
  @url
end

答案 1 :(得分:1)

您可以使用form_tag。它不依赖于任何对象,因此只要您有一个不太简单的原因,您就可以使用它。例如,搜索表单将使用form_tag,因此也是如此。

答案 2 :(得分:0)

你试图使用Ruby类set / get,所以Ruby有一个神奇的东西。

这是一种简单的方法

def url=(url)
  @url = url
end

def url
  @url
end

这是一种神奇的方式

attr_accessor :url

使用这行代码,您将干掉您的代码。