ビュー

<コントローラに、ビューに表示したい情報を定義する>

コントローラーのアクション内に定義したインスタンス変数(@つきの名前の変数)は、そのアクションが表示するビュー内で利用することができます。


tweets_controller.rbコントローラーファイル(subtext)

def indexで@で入力する(表示させる)文字を入れる。

その場合このインスタンス@変数は、indexアクションに対応したビューであるapp/views/tweets/index.html.erbの中で利用できます。

Railsの見た目用のファイルであるerbファイルの中でRubyのコードを利用する場合、<%= %>という記述で囲います。

<%= @入力する文字 %>

<%= %>の中のrubyコードは、ビューをレスポンスとして返すまでに実行されて、最終的にはHTMLになります。

ターミナルでディレクトリ(pictweet)に移動し、rails sを起動するとテストサーバーページが上がる。


<tweetsテーブルのレコードの情報をビューに表示>

『controller.rb』で

def index

 @tweet = Tweet.find(3) ※こうすると特定の表示

end

次に

『index.html.erb』で

<div class="contents row" >

<p><%= @tweet.text %></p> ※こうするとコントローラーの@部分が表示される

</div>


全てのつぶやきを表示する

コントローラーで Tweet.allにする。

index.html.erbファイルで

<div class="contents row" >

 <% @tweets.each do |tweet| %> 追加

 <p><%= tweet.text %></p>

 <% end %> 追加

</div>

このようにすると、eachメソッドのdoとendで囲まれた<%= tweet.text %>の部分を、@tweetsのレコードの数だけ繰り返し表示するようになります。



見た目の変更はviewファイル内。

fontsフォルダを追加してttfファイルをその中に。そしてCSSでファイル名を入れて指定。

application.css内に記述されている「require_tree .」は同じ階層にあるcssファイルをすべて読み込む。


!ツイートの投稿画面を作る!

<ルーティングの設定>

どんなアクションをしたらどのファイルがどう動くかを設定する。

『routes.rb』ファイルで Rails do 〜 end内に

get 'tweets/new' => 'tweets#new' を追加。

前半部分がパス、後半部分がコントローラーとアクションを示しています。「localhost:3000/tweets/new」にアクセスした時にtweetsコントローラーのnewアクションが動くことを示しています。

<次にコントローラーの設定>

『tweets_controller.rb』で

def  new end を追加。

<次にビューファイルの作成>

viewsフォルダの中のtweetフォルダに『new.html.erb』ファイルを新規作成。

〜実際の投稿フォームを作る〜(以下フォームタグ)

<div class="contents row">

<%= form_tag('/tweets', method: :post) do %>

<h3>

投稿する

</h3>

<input placeholder="Nickname" type="text" name="name">

<input placeholder="Image Url" type="text" name="image">

<textarea cols="30" name="text" placeholder="text" rows="10"></textarea>

<input type="submit" value="SENT">

<% end %>

</div>


コントローラーにアクションを追加

paramsメソッド

ビューでフォームに入力された情報は、コントローラーにキーと一緒にパラメーターとして送られます。このパラメーターはparamsというメソッドを使うことで取得することが出来ます。paramsメソッドを使用する際にはparams[:キー名]という形で使用することが出来ます。

ストロングパラメーター

ストロングパラメーターとは、指定したキーを持つパラメーターのみを受け取るようにするものです。もし仮に悪意のあるユーザーが、不正な情報を送信しようとしたときに、ストロングパラメーターを設定しておくと、不正な情報を受け取らずにすみます。

privateメソッド

classの内部でprivateとソースコードに書くと、それ以降に定義したメソッドはclassの外部から呼び出せなくなります。

このようにするメリットは以下の2つです。

1.外部から呼ばれたら困るメソッドを守ることができる

メソッドの中には、外部から呼び出されてしまうとエラーを起こすメソッドも存在し得ます。そんな事態を事前に防ぐことができます。

2.可読性

外部から呼び出されるメソッドを探すときに、private以下の部分は目を通さなくて良くなります。


この記事が気に入ったらサポートをしてみませんか?