このサイトと同様のアプリを作ろうとしています。まず自分の作ったアプリのcontrollerの1行目とmodelは以下のようになっています
model Project controller(projects_controller.rb)1行目 class ProjectsController < ApplicationController
模範としているこのサイトのmodelとcontroller(register_controller.rb)の1行目は、以下のようになっています。
Model Register controller(register_controller.rb)の1行目 class Image::RegisterController < ApplicationController
(以下はprojects_controller.rbのアクションと同じ。)
【質問1】
register_controller.rbのRegisterController < ApplicationController
の前にImage::
とついてるのはどういう意味なのでしょうか。おそらくルーティングが関係していると思われるのですが、
【質問2】
またclass Image::RegisterController
となるcontrollerを作成するにはどうしたらいいのでしょうか?
rake routesコマンドの結果とroutes.rb、およびprojects_controller.rbのコードは以下のようになっています。
#Rake routes Prefix Verb URI Pattern Controller#Action project_tasks POST /projects/:project_id/tasks(.:format) tasks#create project_task DELETE /projects/:project_id/tasks/:id(.:format) tasks#destroy projects GET /projects(.:format) projects#index POST /projects(.:format) projects#create new_project GET /projects/new(.:format) projects#new edit_project GET /projects/:id/edit(.:format) projects#edit project GET /projects/:id(.:format) projects#show PATCH /projects/:id(.:format) projects#update PUT /projects/:id(.:format) projects#update DELETE /projects/:id(.:format) projects#destroy image_register POST /image/register(.:format) image/projects#register image_next POST /image/next(.:format) image/projects#next image_reset GET /image/reset(.:format) image/projects#reset image_download GET /image/download(.:format) image/projects#download image_delete DELETE /image/delete(.:format) image/projects#delete POST /projects/:project_id/tasks/:id/toggle(.:format) tasks#toggle root GET / projects#index
#routes.rb Rails.application.routes.draw do resources :projects do resources :tasks, only: [:create, :destroy] end namespace :image do post 'register' => 'projects#register' post 'next' => 'projects#next' get 'reset' => 'projects#reset' get 'download' => 'projects#download' delete 'delete' => 'projects#delete' end
#controller.rb class ProjectsController < ApplicationController def index tmp = TmpImage.first @image = tmp[:filename] @blocks = TextBlock.view_css(tmp[:image_id]) end def set_project tmp = TmpImage.first @image = tmp[:filename] @blocks = TextBlock.view_css(tmp[:image_id]) end def register pos = params[:pos] text = TextBlock.create( image_id: TmpImage.first[:image_id], text: pos[:text], x1: pos[:pos1_x1], y1: pos[:pos1_y1], x2: pos[:pos2_x2], y2: pos[:pos2_y2] ) redirect_to root_path end # *** 前の操作を取り消すメソッド *** def delete TextBlock.last.delete redirect_to root_path end # *** 次の画像に移動するメソッド *** def next # 現状の画像を完了に tmp = TmpImage.first image = Image.find_by(filename: tmp[:filename]) image.update(is_complete: true) # 新しい画像に切り替える files = Dir::entries("app/assets/images/") files.each do |file| next unless %w(.jpg .png .jpeg).include?(File.extname(file)) # ファイル名が既に書き込まれていないか確認 db_files = Image.where(filename: file) if db_files.empty? image = Image.create(filename: file) TmpImage.first.update(filename: file, image_id: image.id) break end end # トップページへ遷移 redirect_to root_path end # *** ダウンロードページ *** def download respond_to do |format| format.html format.csv do filename = 'recognition_result' headers['Content-Disposition'] = "attachment; filename=\"#{filename}.csv\"" end end end # *** リセット(初期化)用のページ *** def reset # データベースの中身を削除する Image.delete_all TmpImage.delete_all TextBlock.delete_all # 最初の画像を指定する ※ サンプル画像以外の場合はこちらを書き換え image = Image.create(filename:"00asfs1.jpg") TmpImage.create(filename:image[:filename], image_id: image.id) redirect_to root_path end end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/25 09:31 編集
2017/06/25 09:38