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
最善のアプローチソリューションをありがとうございます。
敬具