1

我需要用户在我的表单中输入一个 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 is not a column in URL is an unknown method or variable。

我想做的事

基本上,我需要获取用户正在添加的视频的 URL,以及视频的标题、描述和提供者。

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

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

所以从 URL,我得到provider_video_idthumb它们是数据库列。

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

4

3 回答 3

1

您需要使用虚拟属性。

在您的模型中放入如下内容:

def url=(url)
  @url = url
end

def url
  @url
end
于 2012-06-29T20:26:03.210 回答
1

您可以使用form_tag。它不与任何对象绑定,因此只要您有一个不太简单的理由来使用它,它就是您想要使用的东西。例如,搜索表单将使用 form_tag,这种情况也是如此。

于 2012-06-29T20:26:15.603 回答
0

您尝试使用 Ruby 类设置/获取,所以 Ruby 对此具有魔力。

这是一个简单的方法

def url=(url)
  @url = url
end

def url
  @url
end

这是一种神奇的方式

attr_accessor :url

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

于 2018-06-16T02:59:31.690 回答