45064


現在、railsを用いてwebサイトを作成しようとしています。MVCの基本的な概念は[Rubylife](https://www.rubylife.jp/rails/)というサイトで学んだところです。  
これからサイトを作成していこうと思っているのですが、データのやり取りについて疑問があります。  
それは、データをmodelから返却してviewに埋め込むのか、それともブラウザ側からscriptでロードするのかはどういう基準で判断すればいいのか、ということです。  
例えば、あるページの一部の要素が一週間ごとに追加されていく(この追加されていく部分は、他のサイトをスクレイピングして得られると仮定します)場合、どちらの実装になるのでしょうか?  
得られたデータをjsで描画する場合にはapiを作ることになるかと思いますが、一般的にどういう使い分けがされるのか、また上の例の場合ではどう判断するのかを教えていただきたいです。  
それに加え、このような使い分けの問題について言及しているサイトもあれば教えていただきたいです。宜しくおねがいします。


CC BY-SA 4.0
2018-06-25T13:35:35.633
45058
2019-04-19T01:04:20.853
20533
question
ruby-on-rails html
railsでのmodelとapiの使い分けについて


> 得られたデータをjsで描画する場合にはapiを作ることになるかと思いますが、一般的にどういう使い分けがされるのか

Railsアプリには、"通常モード" と "APIモード" があります。

"通常モード" は、主にデータやアセット(画像やjavascript、css)を埋め込んだHTMLを返却するアプリになります。  
"APIモード" は、データをJSON形式で返却するのみのアプリになります。

そのため、

他のアプリケーションにデータを提供したい場合は、"APIモード" を使います。  
(スマフォアプリ、デスクトップアプリ、React,Vueなどを使ったクライアントサイドアプリなどにJSON形式のデータを提供する場合)

Railsアプリが返却するHTMLで描画を行いたい場合は、"通常モード" を使います。

> 例えば、あるページの一部の要素が一週間ごとに追加されていく(この追加されていく部分は、  
>  他のサイトをスクレイピングして得られると仮定します)場合、どちらの実装になるのでしょうか?

判断基準は、"あるページ" をどのように提供したいか? だと思います。

"あるページ" をRailsアプリとは別のアプリケーションにする場合は、"APIモード" で実装し、  
"あるページ" をRailsアプリが返却するHTMLにする場合は、"通常モード" で実装することになると思います。

> それに加え、このような使い分けの問題について言及しているサイトもあれば教えていただきたいです。宜しくおねがいします。

APIモードはRails5以降の機能のようです。  
Rails5, APIモード といったキーワードで、いくつかサイトの記事や書籍を流し読みすると、  
関連する用語や概念がつかめて良いと思います。


CC BY-SA 4.0
2018-06-25T16:35:26.153
45064
2018-06-25T16:35:26.153
45058
answer


rails を api サーバーとして動かすパターンについては、 @user28902 さんの回答でカバーされているので、いわゆる通常の web
アプリとして Rails を動かすパターンについて回答します。

Rails では基本的にページレンダリング時に必要なデータは rails アプリケーション上で取得して、そのデータを元に view
で動的にページを生成します。動的にページを生成する場合、ブラウザ側から fetch するメリットがほぼないので、 view ですべて DB にクエリした後に
html を view から生成します。

このとき、例えば、自動で画面を更新したい、というようなことをやる場合は、 Rails 的には ActionCable を使うのが一般的かと思います。


CC BY-SA 4.0
2019-03-14T10:11:44.620
53429
2019-03-14T10:11:44.620
754
45058
answer