概要
- 構成(bootcampアプリ@2024年7月)
- Rails 6.1
- Vue 2.7
- React 17.0
- 作業内容
- 作業順序
- Vue・React関連のコードを確認する
- HTML関連のコードを大まかに書く(Vue・Reactのコードを移植)
- 「Vue・React関連の既存表示」と「HTML関連の新規表示」を並べて、確認しながら作業
- Vue・React関連のコードを削除
作業のtips
「.jbuilder」ファイルの探し方
※ちなみにデータの流れは以下
「APIコントローラ」→「.json.jbuilder」で、これを「.vue」や「.jsx」からfetch
している
- 「.vue」「.jsx」ファイルで、下例のような
/api/hoge?${piyo}
という記述を見つける - パス部分(
/api/hoge
)と同じ「Path」をhttp://localhost:3000/rails/info/routes
から探す
下記の例なら、/api/reports(.:format)
等 http://localhost:3000/rails/info/routes
で、「Path」の右に書いてある「Controller#Action」を見て、コントローラとアクションを確認する
下記の例の場合、「Controller#Action」がapi/reports#index
だったので、コントローラがapp/controllers/api/reports_controller.rb
、アクションがindex
等- VSCodeで、アクション名の上に表示される
Jump to view
を押すと「.json.jbuilder」ファイルが開く
(または、アクション名と記載内容から、ファイルを判断)
下記の例の場合、アクションと同名のapp/views/api/reports/index.json.jbuilder
等
// Vueの例 computed: { // ... reportsAPI() { const params = this.newParams return `/api/reports.json?${params}` } }, // Reactの例 const { data, error } = useSWR( practices ? `/api/reports.json?user_id=${userId}&page=${page}&practice_id=${userPracticeId}` : unchecked ? `/api/reports/unchecked.json?page=${page}&user_id=${userId}` : userId !== '' ? `/api/reports.json?page=${page}&user_id=${userId}` : practiceId !== '' ? `/api/reports.json?page=${page}&practice_id=${practiceId}` : companyId !== '' ? `/api/reports.json?page=${page}&company_id=${companyId}` : all === true ? `/api/reports.json?page=${page}&practice_id=${userPracticeId}` : console.log('data_fetched!'), fetcher )
ビューファイルの記述
「ビューファイル(slim形式)」内で、以下のような記述をされている
# Vueの例 div(data-vue="UserRecentReports" data-vue-user-id:number="#{@product.user.id}") # Reactの例 = react_component('Reports', userId: @report.user.id, displayUserIcon: false, displayPagination: false)
参考
- 現場で使える Ruby on Rails 5 速習実践ガイド
- パーフェクト Ruby on Rails [増補改訂版]
- Vueの利用@Rails6
Vue.js チュートリアル for Rails エンジニア(Vue2 version) #webpacker - Qiita
Ruby on Rails, Vue.js で始めるモダン WEB アプリケーション入門 #webpacker - Qiita - Reactの利用@Rails6
reactjs/react-rails: Integrate React.js with Rails views and controllers, the asset pipeline, or webpacker.
ReactをRailsと共に使う方法 #Rails - Qiita
既存Railsアプリに後からReactとTypeScriptを導入する | もふもふ技術部