Controller で params[:hoge].blank? すればいいんじゃないか、という話
collection_selectを使ってるViewだとvalidates_hoge_ofシリーズが使えない(? - INOHILOG の続き。
Modelにvalidation_presence_ofを使って、フォームの空欄をValidationしたかったのですが、collection_selectを使ってるViewだとそれがうまく動かない*1問題。
Controllerで
# POST /articles # POST /articles.xml def create @article = Article.new(params[:article]) if @article.title.blank? flash[:error] = "title は空っぽにできません" redirect_to( :action => 'new' ) return end # 省略
的なことをやって、飛ばした先のView(この場合だとnew.html.erb)に
<% if flash[:error] %> <span style="color: Red;"> <%= flash[:error] %> </span> <% end %>
こんなことを書いておけば、titleの項目を空っぽの状態で送信しても、一応エラーチェックできる。
でもデータに関係するロジック(まさに検証とか)はModelに書きなさいと教わった気がするんですが。この方法はどうなんでしょう。
*1:collection_selectを使っている項目についてvalidation_presence_ofしているわけではない...