ル微王徴

編集画面を日本語化

最終更新:

rubyocho

- view
メンバー限定 登録/ログイン

編集画面を日本語化

app/views/memo/edit.rhtml

  • 「render :partial」は、_form.html から読み込まれる。
  • newのプログラムの際に編集済みなので、「表題:」「本文」などは表示される。
  • 同じようなHTMLを何度も繰り返して書く必要がなくなる。
  • 変更後の edit.rhtml
    <H2 ALIGN="center">「<%=h @memo.title %>」を編集</H2>
    <CENTER>
    <% form_tag :action => 'update', :id => @memo do %>
      <%= render :partial => 'form' %>
      <%= submit_tag '更新する' %>
    <% end %>
    <%= link_to 'リストへ戻る', :action => 'list' %>
    </CENTER>
    
  • 日本語化された編集画面

memo_controller.rb のupdateメソッドを変更

  def update
    @memo = Memo.find(params[:id])               // paramsハッシュ・テーブル
    if @memo.update_attributes(params[:memo])    // update_attributesメソッド
#      flash[:notice] = 'Memo was successfully updated.'
      flash[:notice] =
          "「#{ERB::Util.h(@memo.title)}」を保存しました"
#      redirect_to :action => 'show', :id => @memo
      redirect_to :action => 'edit', :id => @memo  // showからeditへ
    else
      render :action => 'edit'
    end
  end
  • 編集画面の「更新」クリックで、paramsハッシュ・テーブルに、開いているメモに関する情報が代入される。
    • メモid番号は、params[:id]。インデックス。シーケンス値
    • 書き込んだメモデータは、params[:memo]
    • id番号を引数にして、findメソッドを実行
    • Momoモデルによって、SQL文「select * from memos where id=params[:id]」に変換され、memosテーブルから全カラムを取り出し、それを、@memo インスタンスへ代入
  • update_attributesメソッドを実行し、@memo を渡されたデータで更新する。SQLのUPDATE文に変換され、DB更新。
  • flashで、ERB::Util.h(@memo.title) たいとる名でメッセージ
  • showアクションから、editアクションへ、リダイレクト先を変更
    • 保存した後も、編集画面に留まるように変更した
    • 一覧へ戻るには、redirect_to :action => 'list'
  • 僅かに手を加えるだけで、実用に耐ええるアプリが出来上がる。

制約条件を入れる(タイトルは必須項目)

  • いろいろな制約や必須条件にするには、モデル・クラス
  • memo/app/models/memo.rb
  • モデルの制約を記載するのは、validates_* と呼ばれるメソッド群
  • 必須項目指定は、validates_presence_of メソッド
     class Memo < ActiveRecord::Base
       validates_presence_of:title
     end
    
  • タイトルが空白だと出るエラー・メッセージ
  • validates_* メソッドには、文字数やフォーマットなど様々な属性を定義する機能がある。





目安箱バナー