検証要件を満たしていないメッセージをフォームにフラッシュしようとしていますが、これを実現する方法がわかりません。
私は次の設定をしています:
models / item.rb
class Item < ActiveRecord::Base
attr_accessible :condition, :day, :description, :subtitle, :title
validates :user_id, presence: true
validates :title, presence: true
validates :description, presence: true, length: { minimum: 20 }
belongs_to :user
end
controllers / items_controller.rb
class ItemsController < ApplicationController
before_filter :authenticate_user!
def new
@item = Item.new
end
def show
@item = Item.find(params[:id])
end
def create
@item = current_user.items.build(params[:item])
if @item.save
flash[:success] = "Your item has been saved"
redirect_to root_path
else
render 'new'
end
end
def destroy
@item.destroy
redirect_back_or root_path
end
end
そして最後にviews/items / new.html.erb
<h1>Items Base</h1>
<div class="row">
<div class="span6 offset3">
<%= form_for(@item) do |f| %>
<%= f.label :title, "Title" %>
<%= f.text_field :title %>
<%= f.label :subtitle, "Subtitle" %>
<%= f.text_field :subtitle %>
<%= f.label :condition, "Condition" %>
<%= f.number_field :condition %>
<%= f.label :description, "Description" %>
<%= f.text_field :description %>
<%= f.label :day, "Day" %>
<%= f.text_field :day %>
<%= f.submit "List", class: "btn btn-large btn-primary" %>
<% end %>
</div>
</div>
基本的に、「説明が短すぎます!」というメッセージをフラッシュできるようにしたいと思います。ユーザーが空白または20文字未満のままにした場合、または空白のままにした場合は「タイトルが必要です」というメッセージを点滅させます。これを達成するための最善の方法についての考え。また、誰かがフラッシュを扱う上で良いリソースを持っているなら、それは大いにありがたいです。ありがとう。