質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

394閲覧

iOSからrailsでデータの受け取りができない

sr2000

総合スコア39

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/06/23 02:41

編集2019/06/23 03:06

前提・実現したいこと

iOSとrubyを使ってローカルに画像、動画を保存するアプリを作成しています。
rubyはrailsのActiveStorageを使用しています。
iOS側から写真フォルダから写真を選択してAlamofireを使い送信するところまでは、実装できています。
問題はActiveStorageにて保存先をデフォルトのローカルにしているのですが、うまく保存できません。
userモデルを作成して、テスト段階なので、カラムはnameのみのテーブルを作成しました。
iOS側では送信できていると思うのですが、railsでのControllerの実装でなにか足りていないと思うのですが、解決できません。
本来ならrailsのプロジェクトのルートのstorageに画像が保存されると思うのですが。

iOSの方は少し経験があるのですが、rubyはほぼ初心者です。
宜しくおねがいします。

発生している問題・エラーメッセージ(エラーが出てないのが、問題。。。)

Processing by PostTestController#profile as */* Parameters: {"image"=>#<ActionDispatch::Http::UploadedFile:0x00007fe7adba1818 @tempfile=#<Tempfile:/var/folders/9l/gxc7k9f15mdcdzy0nz0y7fcr0000gn/T/RackMultipart20190623-58881-1dq0ws6.jpg>, @original_filename="image.jpg", @content_type="image/jpg", @headers="Content-Type: image/jpg\r\nContent-Disposition: form-data; name=\"image\"; filename=\"image.jpg\"\r\n">, "uuid"=>"0987654321"} (0.2ms) BEGIN ↳ app/controllers/post_test_controller.rb:9 User Create (0.7ms) INSERT INTO `users` (`name`, `created_at`, `updated_at`) VALUES ('0987654321', '2019-06-23 02:32:25', '2019-06-23 02:32:25') ↳ app/controllers/post_test_controller.rb:9 (9.5ms) COMMIT ↳ app/controllers/post_test_controller.rb:9 Completed 200 OK in 46ms (Views: 0.5ms | ActiveRecord: 34.3ms)

該当のソースコード

ruby

1class User < ApplicationRecord 2 has_one_attached :image # 追記 3end

ruby

1class PostTestController < ApplicationController 2 protect_from_forgery except: :profile 3 4 def profile 5 6 pram01 = params[:uuid] 7 8 User.create('name' => pram01) 9 10 #送信結果 0→成功 1→失敗 11 render json: {result: 0} 12 end 13end

Swift

1 /// 画像のアップロード 2 /// TODO: タイトルと詳細をpramとして渡す 3 /// - Returns: <#return value description#> 4 func imageUpload(url: String, image: UIImage, completionHandler: @escaping (Result<T>) -> () = {_ in}) { 5 6 let uuid = "0987654321" 7 8 guard let imageData = image.jpegData(compressionQuality: 1) else { 9 return 10 } 11 12 Alamofire.upload(multipartFormData: { (multipartFormData) in 13 multipartFormData.append(imageData, withName: "image", fileName: "image.jpg", mimeType: "image/jpg") 14 multipartFormData.append(uuid.data(using: .utf8)!, withName: "uuid") 15 16 }, to: url) { (encodingResult) in 17 switch encodingResult { 18 case .success(let upload, _ ,_): 19 upload.uploadProgress(closure: { (progress) in 20 //進捗率の取得 21 print("Upload Progress: (progress.fractionCompleted)") 22 }) 23 24 //以下省略します

試したこと

WEBでの写真保存などは参考にできる記事があると思うのですが、APIとしての受け取り方が見つけれません。

補足情報(FW/ツールのバージョンなど)

Swift 5.0
Rails 5.2.3
railsはAPIモードで作成していません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

userのimageとして、active storageを使っていると思うので、渡すparameterは

users: { images: '~~~'}

みたいな形になります。

現状imageだけ渡しているように見えるので、まずはparameterの形式を気にしてあげると良さそうです。

また、userを作る時にも、現状nameのみを指定しているようにみえるので、画像も一緒に保存してあげるようにする必要がありそうです。

投稿2019/06/23 11:00

t_kusakabe74

総合スコア549

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sr2000

2019/07/01 07:11

まず返事が遅れて申し訳ありません。 ご回答ありがとうございます。 railsのほうでストロングパラメータを指定していなかったので、受け取れていなかったようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問