我想将 youtube URL 的 youtube 嵌入链接版本存储在我的数据库中。我有一个助手可以帮助将用户粘贴的链接转换为嵌入版本。
无论如何,在保存之前,我想对其进行转换,然后将转换后的值传递给模型以进行保存。我在控制器中创建了一个方法,用于将链接参数传递给进行转换的辅助方法。
无论如何,这没有任何影响。粘贴到文本框中的原始链接将被保存。我已经尝试在模型中使用 before_save 和 self.link 执行此操作,但它也不起作用。以下是我当前的代码。
形式:
= form_for @micropost, :remote => true do |f|
= f.text_field :link, :class => "addLinkField"
= f.submit
转换粘贴链接的助手:
module OgpObjectsHelper
def video_embed(video_url)
if video_url[/(https?):\/\/(www.)?(youtube\.com\/watch\?v=|youtu\.be\|youtube\.com\/watch\?feature=player_embedded&v=)([A-Za-z0-9_-]*)(\&\S+)?(\S)*/]youtube_id = $4
"http://www.youtube.com/embed/#{ youtube_id }"
end
end
控制器:
class MicropostsController < ApplicationController
include OgpObjectsHelper
before_filter :convert_video_link
def create
@micropost = current_user.microposts.build(params[:micropost])
respond_to do |format|
if @micropost.save
format.html { render :partial => '/users/partials/micropost'}
end
end
end
def convert_video_link
video_embed(params[:micropost][:link])
end
end
我将不胜感激最好的方法解决方案谢谢。
亲切的问候