ruby on railsで投稿フォームを作り、テキストと動画ファイルを保存したいのですが、カラムに保存されず、ビューにも表示されません。エラーは特に出ておりません。カラム名はそれぞれtext、videoとしております。
投稿フォームのコードは、
<%= form_for(@tweet) do |f| %> <h3> 投稿する </h3> <%= f.text_field :text, placeholder: "内容" %> <%= f.file_field :video, :accept => 'video/*' %> <%= f.submit "投稿する" %> <% end %>
コントローラーは、
def new @tweet = Tweet.new end def create Tweet.create(video: tweet_params[:video], text: tweet_params[:text], user_id: current_user.id) end
としております。
対処法をご教示いただけないでしょうか?
tweet_params 見せてください。
videoはどういう方法でsaveするのでしょう? ActiveStrage? CarreatWave?
あとTweetのvalidation定義
tweet_paramsは、
def tweet_params
params.permit(:text, :video)
end
です。
保存はcarrier waveを使ってみようと思っています。初心者のため、まだ使った事がないですが・・・。
validationは特に設けていないのですが、必須でしょうか?tweetモデルに記載ですよね?
params.require(:tweet).permit(:text, :video)
ですね。
それとfileをしまう仕掛けを作っておかないとそこでコケるかも。
少なくともvideoの再生はないです。
validationを要求したのは、「validationでsave失敗」の可能性を確認したかったので。なければその関係はないのでOKです
ありがとうございます。
カラムに保存できました。fileをしまう仕掛けというと、どういったものなのでしょうか?
また、再生する場合はどのようにすればよいか、ご教示いただくことは可能でしょうか?
fileをしまう仕掛け は最近は ActiveStorageをつかうかcarrierwaveを使うのが普通のようです。これを検索してください
あなたの回答
tips
プレビュー