我需要用户在表单中输入一个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_id
,thumb
这些是数据库列。
**如何在没有专用数据库列的情况下在表单中收到用户URL?
答案 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
使用这行代码,您将干掉您的代码。