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

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

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

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

Ruby on Rails 6

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

Ruby on Rails

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

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Active Record

Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

Q&A

1回答

1873閲覧

Active_storageを用いた画像の複数枚の保存ができないため保存ができるようにしたい

daichipa

総合スコア0

Ruby

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

Ruby on Rails 6

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

Ruby on Rails

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

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Active Record

Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

0グッド

0クリップ

投稿2020/11/14 09:20

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
ruby初学者です。
現在、画像投稿アプリケーションを作成しています。
そのため肝心な画像の複数枚保存ができない状態になっています。
localに保存ができるようにconfigのActive_storageの保存場所はlocalになっています。
画像を一枚のみの保存に関してはできました。

画像の複数枚投稿ができるようにお力添え願いたいです。

発生している問題・エラーメッセージ

エラーメッセージでないエラーです
コントローラー内の、
render :new
によって入力画面に戻ってしまいます。

該当のソースコード

ruby/app/controllers/tweets_controller.rb

1class TweetsController < ApplicationController 2 before_action :move_to_index, except: [:index, :show, :search] 3 before_action :set_tweet, only: [:edit, :show] 4 5 6 def index 7 @tweets = Tweet.includes(:user).order("created_at DESC") 8 end 9 10 def new 11 @tweet = Tweet.new 12 end 13 14 def create 15 @tweet = Tweet.new(tweet_params) 16 if @tweet.valid? 17 @tweet.save 18 redirect_to root_path 19 else 20 render :new 21 end 22 end 23 24 def destroy 25 @tweet = Tweet.find(params[:id]) 26 if user_signed_in? && current_user.id == @tweet.user_id 27 @tweet.destroy 28 redirect_to root_path 29 end 30 31 def edit 32 @tweet = Tweet.find(params[:id]) 33 end 34 35 def update 36 @tweet = Tweet.find(params[:id]) 37 @tweet.update(tweet_params) 38 if @tweet.valid? 39 @tweet.save 40 redirect_to root_path 41 else 42 render :new 43 end 44 end 45 46 def show 47 @comment = Comment.new 48 @comments = @tweet.comments.includes(:user) 49 end 50 51 def search 52 @tweets = Tweet.search(params[:keyword]) 53 end 54 55 56 57 private 58 def tweet_params 59 params.require(:tweet).permit(:text, :season_id, :prefecture_id, :category_id, images: []).merge(user_id: current_user.id) 60 end 61 62 def set_tweet 63 @tweet = Tweet.find(params[:id]) 64 end 65 66 def move_to_index 67 unless user_signed_in? 68 redirect_to action: :index 69 end 70 end 71end 72

ruby/app/models/tweet.rb

1 2コード 3class Tweet < ApplicationRecord 4 has_many_attached :images 5 belongs_to :user 6 has_many :comments 7 8 extend ActiveHash::Associations::ActiveRecordExtensions 9 belongs_to_active_hash :category 10 belongs_to_active_hash :season 11 belongs_to_active_hash :prefecture 12 13 14 with_options presence: true do 15 validates :text 16 validates :category_id 17 validates :prefecture_id 18 validates :season_id 19 validates :images 20 end 21 22 with_options numericality: { other_than: 1 } do 23 validates :category_id 24 validates :season_id 25 validates :prefecture_id 26 end 27 28 def self.search(search) 29 if search != "" 30 Tweet.where('text LIKE(?)', "%#{search}%") 31 else 32 Tweet.all 33 end 34 end 35 36end 37 38 39### 試したこと 40 41binding.pryで保存の際に送られる値を確認しました。

コード

[1] pry(#<TweetsController>)> params => <ActionController::Parameters {"authenticity_token"=>"q9ut1vnkzXe8CmI9FgYG/vtigCuhPeb4hlUcSJlMZ3i9wYZpc4MceuiaL9VVkz4yzJ+mOzRCtGevtcvFn8JZ1w==", "tweets_tag"=>{"images"=>[#<ActionDispatch::Http::UploadedFile:0x00007ffbf7c0fa58 @tempfile=#<Tempfile:/var/folders/5q/pj4mjxp97vbdhyyxgyyblx8w0000gn/T/RackMultipart20201114-3484-8oa2ey.jpeg>, @original_filename="A0D8AC58-A69A-48D4-B2A6-46B5935EDB72.jpeg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"tweets_tag[images][]\"; filename=\"A0D8AC58-A69A-48D4-B2A6-46B5935EDB72.jpeg\"\r\nContent-Type: image/jpeg\r\n">]}, "tweet"=><ActionController::Parameters {"category_id"=>"5", "season_id"=>"3", "prefecture_id"=>"3", "text"=>"aaa"} permitted: false>, "commit"=>"SEND", "controller"=>"tweets", "action"=>"create"} permitted: false> [2] pry(#<TweetsController>)> @tweet => #<Tweet:0x00007ffbf6e2ea38 id: nil, text: "aaa", season_id: 3, category_id: 5, prefecture_id: 3, created_at: nil, updated_at: nil, user_id: 2>

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

ver6.0.0で開発を行なっております。
現在は投稿機能のみのはじめたてです

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

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

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

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

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

guest

回答1

0

コントローラーの

def index @tweets = Tweet.includes(:user).order("created_at DESC") end

def index @tweets = Tweet.all.order("created_at DESC") end

にしてみてはいかがでしょうか?

投稿2020/11/14 13:43

R_Hi-ra

総合スコア12

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

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

daichipa

2020/11/16 04:34

お返事遅くなり申し訳ございません。 ご回答ありがとうございます。 コントローラー内のindexの変更となると保存機能に関係はありますでしょうか。 実際変更してみたところ保存に影響が出ることはありませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問