前提・実現したいこと
Ruby on railsで投稿機能を実装したいです。
発生している問題
バリデーションで空白を禁止にしているが空白でもバリデーションが機能してくれない。
すべて空欄でsubmitボタンを押すとcreateメソッドに遷移してしまう。
該当のソースコード
app/views/video/new.html.erb
<p class="tintin">審査後俺が使う。パスワード設定する</p> <% if @video.errors.any? %> <div class="video-error"> <ul> <% @video.errors.full_messages.each do |message| %> <li><%= message %></li> <% end %> </ul> </div> <% end %> <% @video = Video.new unless @video %> <%= form_for :@video,:url => {controller: "video", action: "create" } do |form| %> <p>video_id(watch?v=の先)</p> <%= form.text_field :video_id %> <p>タイトルを設定しましょう(´・ω・`)</p> <%= form.text_field :title %> <p>説明文を記載しましょう(´・ω・`)</p> <%= form.text_area :setumei %> <p>カテゴリーを選んで下さい</p> <%= form.check_box :kategori ,{ class: "okane" }, "書評要約", "no" %>書評要約 <%= form.check_box :kategori ,{ class: "okane" }, "仕事術", "no" %>仕事術 <%= form.check_box :kategori ,{ class: "okane" }, "ネットビジネス", "no" %>ネットビジネス <%= form.check_box :kategori ,{ class: "okane" }, "マインド・思考法", "no" %>マインド・思考法 <%= form.check_box :kategori ,{ class: "okane" }, "せどり・物販", "no" %>せどり・物販 <%= form.check_box :kategori ,{ class: "okane" }, "副業", "no" %>副業 <%= form.check_box :kategori ,{ class: "okane" }, "起業", "no" %>起業 <%= form.check_box :kategori ,{ class: "okane" }, "投資", "no" %>投資 <%= form.check_box :kategori ,{ class: "okane" }, "プログラミング", "no" %>プログラミング <%= form.check_box :kategori ,{ class: "okane" }, "プログラミング以外のテクノロジー", "no" %>プログラミング以外のテクノロジー <%= form.check_box :kategori ,{ class: "okane" }, "外国語", "no" %>外国語 <%= form.submit "コンテンツを作成!", class: "koji" %> <% end %> <script type="text/javascript"> $("p").css("color", "red"); (function($){ $('input[class="okane"]').change(function() { var len = $('input[class="okane"]:checked').length; if (len >= 3) { $('input[class="okane"]').not(':checked').attr('disabled', 'disabled'); } else { $('input[class="okane"]').not(':checked').removeAttr('disabled'); } }); })(jQuery); </script>
app/models/video.rb
class Video < ApplicationRecord validates :video_id, presence: true, uniqueness: true, length: { in: 7..15 } validates :title, presence: true, length: { in: 5..20 } validates :setumei, presence: true, length: { maximum: 5000 } end
補足情報
Windows 10 home 64ビット
ruby 2.6.6
Ruby on rails 6.0.3.1
PostgreSQL 13beta1
テキストエディタ Atom
追記
app/controllers/video_controller.rb
def new @video = Video.new # unless current_user # redirect_to("/") # flash[:alert] = "ログインしている方のみ投稿できます。" end end def create @video = Video.new(video_id: params[:video_id],title: params[:title],setumei: params[:setumei],kategori: params[:kategori]) if @video.save flash[:notice] = "コンテンツの作成が完了しますた!(´ . .̫ . `)" redirect_to("/") else flash[:alert] = "コンテンツ作成失敗" render :new end end
newアクションが投稿申請用でcreateでsaveしていますがバリデーションが機能しない現状です。
失礼な点があるかもしれませんがどうぞ宜しくおねがい致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/06/01 23:16
退会済みユーザー
2020/06/02 00:55