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

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

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

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

4136閲覧

wrong number of arguments (given 3, expected 1..2)を解決したい

senseIY

総合スコア281

Ruby on Rails 6

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2022/03/18 23:59

解決したいこと

バリデーションを導入した際に引数のエラーが出てしまったので解決したいです。

ArgumentError in GogakusController#create wrong number of arguments (given 3, expected 1..2)   @gogaku = current_user.gogakus.build(gogaku_params) byebug    if @gogaku.save   <=ここでエラーが発生 flash[:success] = "登録完了!" redirect_to root_url else Parameters: {"authenticity_token"=>"[FILTERED]", "gogaku"=> {"subject"=>"p", "body"=>"p", "file"=> #<ActionDispatch::Http::UploadedFile:0x00007fd18905c7a8 @content_type="audio/mpeg", @headers="Content-Disposition: form-data; name=\"gogaku[file]\"; filename=\"167_Unit 11.5_natural.mp3\"\r\n" + "Content-Type: audio/mpeg\r\n", @original_filename="167_Unit 11.5_natural.mp3", @tempfile=#<File:/tmp/RackMultipart20220318-1-e7ee00.mp3>>, "answer"=>""}, "commit"=>"登録"}

処理の流れ

newアクションでフォームを表示してからcreateアクションで新しくデータを作成する直後にこのエラーが発生しました。下のコードは「gem 'active_storage_validations', '0.8.2'」を使用する際に記述しました。もともと(バリデーションをかけないとき)はこのエラーは発生せず、きちんとsaveが実行されていました。追加したバリデーションはこちらになります。ちなみにこのgemを追加しただけでバージョンをかけなければ正常に動作します。

# app/models/gogaku.rb validates :file,size: { less_than: 1.megabytes, message: "should be less than 1MB" }

controller

def new @gogaku = Gogaku.new end def create @gogaku = current_user.gogakus.build(gogaku_params) # @gogaku.file = params[:gogaku][:file] #byebug if @gogaku.save flash[:success] = "登録完了!" redirect_to root_url else @feed_items = current_user.feed.paginate(page: params[:page]) flash[:danger] = @gogaku.errors.full_messages if @gogaku.errors.any? redirect_to new_gogaku_path end def gogaku_params params.require(:gogaku).permit(:subject, :body, :file, :answer,) end

new.html.erb *一応コメントアウトしたjqueryの処理付き

<h1>教材登録</h1> <% if flash.any? %> <% flash.each do |message_type, messages| %> <% messages.each do |message| %> <div class="alert alert-<%= message_type %>"><%= message %></div> <% end %> <% end %> <% end %> <script src="https://code.jquery.com/jquery-3.3.1.js"></script> <%= form_with model: @gogaku do |f| %> <%# ,name: "GogakuForm",id:"G_id" %> <div class = "form-group"> <label>教科</label> <%= f.text_field :subject, class:"form-control"%> </div> <div class = "form-group"> <label>内容</label> <%= f.text_field :body, class:"form-control"%> </div> <div class = "form-group"> <label>音声</label> <span class="file"> <%= f.file_field :file,accept:"audio/*",class:"form-control" %> <%# <script> const maxFileSize=5242880 //アップロードできる最大サイズを指定(1048576=1MB) $("input[type=file]").change(function(){ //ファイルがアップロードされたら $(".error_msg").remove() //エラーメッセージ削除 let uploaded_file=$(this).prop('files')[0]; //アップロードファイル取得 if(maxFileSize < uploaded_file.size){ //もし上限値を超えた場合 $(this).val("") //画像を空にする $(this).after("<p class='error_msg'>アップロードできる画像の最大サイズは5MBです</p>") //エラーメッセージ表示 } }) </script> ,name:"image[]" %> </span> </div> <%# ,id:"audio_file", type:"file" ,accept:"audio/*", name:"title" %> <div class = "form-group"> <label>答え</label> <%= f.text_field :answer, class:"form-control"%> </div> <% if current_user.gogakus.count < 5 %> <%= f.submit"登録",class:"btn btn-danger"%> <% else %> <h2>これ以上音声を登録出来ません。今ある音声を削除すれば新しく登録出来ます。</h2> <% end %> <%= link_to "戻る", root_url ,class:"btn btn-info"%> <% end %>

エラーが発生する前のparams状態をbeybugで知らべました

(byebug) params #<ActionController::Parameters {"authenticity_token"=>"#一応伏せます", "gogaku"=>#<ActionController::Parameters {"subject"=>"try", "body"=>"try", "file"=>#<ActionDispatch::Http::UploadedFile:0x00007fd18b4c1aa8 @tempfile=#<Tempfile:/tmp/RackMultipart20220318-1-r9b6b9.mp3>, @original_filename="164_Unit 11.4_slow.mp3", @content_type="audio/mpeg", @headers="Content-Disposition: form-data; name=\"gogaku[file]\"; filename=\"164_Unit 11.4_slow.mp3\"\r\nContent-Type: audio/mpeg\r\n">, "answer"=>""} permitted: false>, "commit"=>"登録", "controller"=>"gogakus", "action"=>"create"} permitted: false>

一応エラーが発生した時のものも載せます

(byebug) params #<ActionController::Parameters {"authenticity_token"=>"#一応伏せます", "gogaku"=>#<ActionController::Parameters {"subject"=>"try", "body"=>"try", "file"=>#<ActionDispatch::Http::UploadedFile:0x00007f8ea00628c8 @tempfile=#<Tempfile:/tmp/RackMultipart20220318-1-oae2z1.mp3>, @original_filename="164_Unit 11.4_slow.mp3", @content_type="audio/mpeg", @headers="Content-Disposition: form-data; name=\"gogaku[file]\"; filename=\"164_Unit 11.4_slow.mp3\"\r\nContent-Type: audio/mpeg\r\n">, "answer"=>""} permitted: false>, "commit"=>"登録", "controller"=>"gogakus", "action"=>"create"} permitted: false>

見てわかる通りエラーが発生してもしなくてもparamsの中身はほぼ変わっていませんでした。

自分で試したことなど

・beybugを使って自分なりに知らべましたが、なぜparamsの中身が同じなのにgemでバリデーションをかけると引数のエラーになってしまうのか分かりません。
・ほかの方法(jqueryを使う方法)でファイルサイズのチェックを実装してみましたが、form_withを使う都合上、処理でname属性を使ってしまうと上手く行かずエラーになることが分かりました(登録はできるが、showアクションでなぜかエラーが出てしまう)。
・そもそもこの時点でエラーが2つ{MIMEのエラーと一部の保存したファイル(条件がまだ特定できていませんが、500エラーかつ時間は関係なさそうだったので、恐らくActiveStrageのエラー)が読み込めないでエラーになる}発生しているのでそれが原因かもしれません。私のこのエラーに関する過去の質問も関係しているかもしれないので一応載せておきます。(まだ未解決なので、もしよろしければこちらも見ていただけると有り難いです。)
https://teratail.com/questions/u4zzcufouo9c9n

開発環境

・wsl2のubuntuを使っています
・ruby 3.0.3
・Rails 6.1.5
・Dockerで環境構築を行いました。

プログラミング入門者なので何かしら間違えた認識をしているかもしれません。
何かしらアドバイスがあればよろしくお願いいたします。

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

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

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

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

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

maisumakun

2022/03/19 00:10

エラーのスタックトレース(どのメソッドからどこを呼んで、という情報)も載せていただけませんか?
senseIY

2022/03/19 02:54

字数制限のため、ここに記述させていただきます。またスタックトレース(バックトレース)という言葉を初めて聞きました。自分なりにいろいろ調べてある程度概要はつかめたと思います。ですが、バックトレースの出力が上手く行っているか分からなかったのでnextも記述しました。間違えた情報を載せていたらすみません。 ``` (byebug) bt --> #0 GogakusController.create at /app/app/controllers/gogakus_controller.rb:26 #1 ActionController::BasicImplicitRender.send_action(method#String, *args#Array) at /usr/local/bundle/gems/actionpack-6.1.5/lib/action_controller/metal/basic_implicit_render.rb:6 #2 AbstractController::Base.process_action(method_name#String, *args#Array) at /usr/local/bundle/gems/actionpack-6.1.5/lib/abstract_controller/base.rb:228 #3 ActionController::Rendering.process_action(*args) at /usr/local/bundle/gems/actionpack-6.1.5/lib/action_controller/metal/rendering.rb:30 #4 block in AbstractController::Callbacks.block in process_action(*args) at /usr/local/bundle/gems/actionpack-6.1.5/lib/abstract_controller/callbacks.rb:42 #5 block in ActiveSupport::Callbacks.block in run_callbacks(kind#Symbol) at /usr/local/bundle/gems/activesupport-6.1.5/lib/active_support/callbacks.rb:117 #6 ActionText::Rendering::ClassMethods.with_renderer(renderer#GogakusController) at /usr/local/bundle/gems/actiontext-6.1.5/lib/action_text/rendering.rb:20 #7 block (4 levels) in block (4 levels) in <class:Engine> at /usr/local/bundle/gems/actiontext-6.1.5/lib/action_text/engine.rb:59 ͱ-- #8 BasicObject.instance_exec(*args) at /usr/local/bundle/gems/activesupport-6.1.5/lib/active_support/callbacks.rb:126 #9 block in ActiveSupport::Callbacks.block in run_callbacks(kind#Symbol) at /usr/local/bundle/gems/activesupport-6.1.5/lib/active_support/callbacks.rb:126 #10 ActiveSupport::Callbacks.run_callbacks(kind#Symbol) at /usr/local/bundle/gems/activesupport-6.1.5/lib/active_support/callbacks.rb:137 #11 AbstractController::Callbacks.process_action(*args) at /usr/local/bundle/gems/actionpack-6.1.5/lib/abstract_controller/callbacks.rb:41 #12 ActionController::Rescue.process_action(*args) at /usr/local/bundle/gems/actionpack-6.1.5/lib/action_controller/metal/rescue.rb:22 #13 block in ActionController::Instrumentation.block in process_action(*args) at /usr/local/bundle/gems/actionpack-6.1.5/lib/action_controller/metal/instrumentation.rb:34 #14 block in #<Class:ActiveSupport::Notifications>.block in instrument(name#String, payload#Hash) at /usr/local/bundle/gems/activesupport-6.1.5/lib/active_support/notifications.rb:203 #15 ActiveSupport::Notifications::Instrumenter.instrument(name#String, payload#Hash) at /usr/local/bundle/gems/activesupport-6.1.5/lib/active_support/notifications/instrumenter.rb:24 #16 #<Class:ActiveSupport::Notifications>.instrument(name#String, payload#Hash) at /usr/local/bundle/gems/activesupport-6.1.5/lib/active_support/notifications.rb:203 #17 ActionController::Instrumentation.process_action(*args) at /usr/local/bundle/gems/actionpack-6.1.5/lib/action_controller/metal/instrumentation.rb:33 #18 ActionController::ParamsWrapper.process_action(*args) at /usr/local/bundle/gems/actionpack-6.1.5/lib/action_controller/metal/params_wrapper.rb:249 #19 ActiveRecord::Railties::ControllerRuntime.process_action(action#String, *args#Array) at /usr/local/bundle/gems/activerecord-6.1.5/lib/active_record/railties/controller_runtime.rb:27 #20 AbstractController::Base.process(action#String, *args#Array) at /usr/local/bundle/gems/actionpack-6.1.5/lib/abstract_controller/base.rb:165 #21 ActionView::Rendering.process(*args) at /usr/local/bundle/gems/actionview-6.1.5/lib/action_view/rendering.rb:39 #22 ActionController::Metal.dispatch(name#String, request#ActionDispatch::Request, response#ActionDispatch::Response) at /usr/local/bundle/gems/actionpack-6.1.5/lib/action_controller/metal.rb:190 #23 #<Class:ActionController::Metal>.dispatch(name#String, req#ActionDispatch::Request, res#ActionDispatch::Response) at /usr/local/bundle/gems/actionpack-6.1.5/lib/action_controller/metal.rb:254 #24 ActionDispatch::Routing::RouteSet::Dispatcher.dispatch(controller#Class, action#String, req#ActionDispatch::Request, res#ActionDispatch::Response) at /usr/local/bundle/gems/actionpack-6.1.5/lib/action_dispatch/routing/route_set.rb:50 #25 ActionDispatch::Routing::RouteSet::Dispatcher.serve(req#ActionDispatch::Request) at /usr/local/bundle/gems/actionpack-6.1.5/lib/action_dispatch/routing/route_set.rb:33 #26 block in ActionDispatch::Journey::Router.block in serve(req#ActionDispatch::Request) at /usr/local/bundle/gems/actionpack-6.1.5/lib/action_dispatch/journey/router.rb:50 ͱ-- #27 Array.each at /usr/local/bundle/gems/actionpack-6.1.5/lib/action_dispatch/journey/router.rb:32 #28 ActionDispatch::Journey::Router.serve(req#ActionDispatch::Request) at /usr/local/bundle/gems/actionpack-6.1.5/lib/action_dispatch/journey/router.rb:32 #29 ActionDispatch::Routing::RouteSet.call(env#Hash) at /usr/local/bundle/gems/actionpack-6.1.5/lib/action_dispatch/routing/route_set.rb:842 #30 Rack::TempfileReaper.call(env#Hash) at /usr/local/bundle/gems/rack-2.2.3/lib/rack/tempfile_reaper.rb:15 #31 Rack::ETag.call(env#Hash) at /usr/local/bundle/gems/rack-2.2.3/lib/rack/etag.rb:27 #32 Rack::ConditionalGet.call(env#Hash) at /usr/local/bundle/gems/rack-2.2.3/lib/rack/conditional_get.rb:40 #33 Rack::Head.call(env#Hash) at /usr/local/bundle/gems/rack-2.2.3/lib/rack/head.rb:12 #34 ActionDispatch::PermissionsPolicy::Middleware.call(env#Hash) at /usr/local/bundle/gems/actionpack-6.1.5/lib/action_dispatch/http/permissions_policy.rb:22 #35 ActionDispatch::ContentSecurityPolicy::Middleware.call(env#Hash) at /usr/local/bundle/gems/actionpack-6.1.5/lib/action_dispatch/http/content_security_policy.rb:19 #36 Rack::Session::Abstract::Persisted.context(env#Hash, app#ActionDispatch::ContentSecurityPolicy::Middleware) at /usr/local/bundle/gems/rack-2.2.3/lib/rack/session/abstract/id.rb:266 #37 Rack::Session::Abstract::Persisted.call(env#Hash) at /usr/local/bundle/gems/rack-2.2.3/lib/rack/session/abstract/id.rb:260 #38 ActionDispatch::Cookies.call(env#Hash) at /usr/local/bundle/gems/actionpack-6.1.5/lib/action_dispatch/middleware/cookies.rb:689 #39 ActiveRecord::Migration::CheckPending.call(env#Hash) at /usr/local/bundle/gems/activerecord-6.1.5/lib/active_record/migration.rb:601 #40 block in ActionDispatch::Callbacks.block in call(env#Hash) at /usr/local/bundle/gems/actionpack-6.1.5/lib/action_dispatch/middleware/callbacks.rb:27 #41 ActiveSupport::Callbacks.run_callbacks(kind#Symbol) at /usr/local/bundle/gems/activesupport-6.1.5/lib/active_support/callbacks.rb:98 #42 ActionDispatch::Callbacks.call(env#Hash) at /usr/local/bundle/gems/actionpack-6.1.5/lib/action_dispatch/middleware/callbacks.rb:26 #43 ActionDispatch::Executor.call(env#Hash) at /usr/local/bundle/gems/actionpack-6.1.5/lib/action_dispatch/middleware/executor.rb:14 #44 ActionDispatch::ActionableExceptions.call(env#Hash) at /usr/local/bundle/gems/actionpack-6.1.5/lib/action_dispatch/middleware/actionable_exceptions.rb:18 #45 ActionDispatch::DebugExceptions.call(env#Hash) at /usr/local/bundle/gems/actionpack-6.1.5/lib/action_dispatch/middleware/debug_exceptions.rb:29 #46 WebConsole::Middleware.call_app(env#Hash) at /usr/local/bundle/gems/web-console-4.2.0/lib/web_console/middleware.rb:132 #47 block in WebConsole::Middleware.block in call(env#Hash) at /usr/local/bundle/gems/web-console-4.2.0/lib/web_console/middleware.rb:19 ͱ-- #48 Kernel.catch(*args) at /usr/local/bundle/gems/web-console-4.2.0/lib/web_console/middleware.rb:17 #49 WebConsole::Middleware.call(env#Hash) at /usr/local/bundle/gems/web-console-4.2.0/lib/web_console/middleware.rb:17 #50 ActionDispatch::ShowExceptions.call(env#Hash) at /usr/local/bundle/gems/actionpack-6.1.5/lib/action_dispatch/middleware/show_exceptions.rb:33 #51 Rails::Rack::Logger.call_app(request#ActionDispatch::Request, env#Hash) at /usr/local/bundle/gems/railties-6.1.5/lib/rails/rack/logger.rb:37 #52 block in Rails::Rack::Logger.block in call(env#Hash) at /usr/local/bundle/gems/railties-6.1.5/lib/rails/rack/logger.rb:26 #53 block in ActiveSupport::TaggedLogging.block in tagged(*tags#Array) at /usr/local/bundle/gems/activesupport-6.1.5/lib/active_support/tagged_logging.rb:99 #54 ActiveSupport::TaggedLogging::Formatter.tagged(*tags#Array) at /usr/local/bundle/gems/activesupport-6.1.5/lib/active_support/tagged_logging.rb:37 #55 ActiveSupport::TaggedLogging.tagged(*tags#Array) at /usr/local/bundle/gems/activesupport-6.1.5/lib/active_support/tagged_logging.rb:99 #56 Rails::Rack::Logger.call(env#Hash) at /usr/local/bundle/gems/railties-6.1.5/lib/rails/rack/logger.rb:26 #57 Sprockets::Rails::QuietAssets.call(env#Hash) at /usr/local/bundle/gems/sprockets-rails-3.4.2/lib/sprockets/rails/quiet_assets.rb:13 #58 ActionDispatch::RemoteIp.call(env#Hash) at /usr/local/bundle/gems/actionpack-6.1.5/lib/action_dispatch/middleware/remote_ip.rb:81 #59 ActionDispatch::RequestId.call(env#Hash) at /usr/local/bundle/gems/actionpack-6.1.5/lib/action_dispatch/middleware/request_id.rb:26 #60 Rack::MethodOverride.call(env#Hash) at /usr/local/bundle/gems/rack-2.2.3/lib/rack/method_override.rb:24 #61 Rack::Runtime.call(env#Hash) at /usr/local/bundle/gems/rack-2.2.3/lib/rack/runtime.rb:22 #62 ActiveSupport::Cache::Strategy::LocalCache::Middleware.call(env#Hash) at /usr/local/bundle/gems/activesupport-6.1.5/lib/active_support/cache/strategy/local_cache_middleware.rb:29 #63 ActionDispatch::Executor.call(env#Hash) at /usr/local/bundle/gems/actionpack-6.1.5/lib/action_dispatch/middleware/executor.rb:14 #64 ActionDispatch::Static.call(env#Hash) at /usr/local/bundle/gems/actionpack-6.1.5/lib/action_dispatch/middleware/static.rb:24 #65 Rack::Sendfile.call(env#Hash) at /usr/local/bundle/gems/rack-2.2.3/lib/rack/sendfile.rb:110 #66 ActionDispatch::HostAuthorization.call(env#Hash) at /usr/local/bundle/gems/actionpack-6.1.5/lib/action_dispatch/middle ```
senseIY

2022/03/19 02:55

続き ``` #66 ActionDispatch::HostAuthorization.call(env#Hash) at /usr/local/bundle/gems/actionpack-6.1.5/lib/action_dispatch/middleware/host_authorization.rb:148 #67 Rack::MiniProfiler.call(env#Hash) at /usr/local/bundle/gems/rack-mini-profiler-2.3.4/lib/mini_profiler/profiler.rb:393 #68 Webpacker::DevServerProxy.perform_request(env#Hash) at /usr/local/bundle/gems/webpacker-5.4.3/lib/webpacker/dev_server_proxy.rb:25 #69 Rack::Proxy.call(env#Hash) at /usr/local/bundle/gems/rack-proxy-0.7.2/lib/rack/proxy.rb:67 #70 Rails::Engine.call(env#Hash) at /usr/local/bundle/gems/railties-6.1.5/lib/rails/engine.rb:539 #71 Puma::Configuration::ConfigMiddleware.call(env#Hash) at /usr/local/bundle/gems/puma-5.6.2/lib/puma/configuration.rb:252 #72 block in Puma::Request.block in handle_request(client#Puma::Client, lines#Puma::IOBuffer, requests#Integer) at /usr/local/bundle/gems/puma-5.6.2/lib/puma/request.rb:77 #73 Puma::ThreadPool.with_force_shutdown at /usr/local/bundle/gems/puma-5.6.2/lib/puma/thread_pool.rb:340 #74 Puma::Request.handle_request(client#Puma::Client, lines#Puma::IOBuffer, requests#Integer) at /usr/local/bundle/gems/puma-5.6.2/lib/puma/request.rb:76 #75 Puma::Server.process_client(client#Puma::Client, buffer#Puma::IOBuffer) at /usr/local/bundle/gems/puma-5.6.2/lib/puma/server.rb:441 #76 block in Puma::ThreadPool.block in spawn_thread at /usr/local/bundle/gems/puma-5.6.2/lib/puma/thread_pool.rb:147 (byebug) next TRANSACTION (17.2ms) BEGIN ↳ app/controllers/gogakus_controller.rb:26:in `create' TRANSACTION (10.6ms) ROLLBACK ↳ app/controllers/gogakus_controller.rb:26:in `create' [17, 26] in /usr/local/bundle/gems/actiontext-6.1.5/lib/action_text/rendering.rb 17: def with_renderer(renderer) 18: previous_renderer = self.renderer 19: self.renderer = renderer 20: yield 21: ensure => 22: self.renderer = previous_renderer 23: end 24: 25: def render(*args, &block) 26: (renderer || default_renderer).render_to_string(*args, &block) (byebug) [123, 132] in /usr/local/bundle/gems/activesupport-6.1.5/lib/active_support/callbacks.rb 123: next_sequence = next_sequence.nested 124: begin 125: target, block, method, *arguments = current.expand_call_template(env, invoke_sequence) 126: target.send(method, *arguments, &block) 127: ensure => 128: next_sequence = current 129: end 130: end 131: current.invoke_after(env) 132: skipped.pop.invoke_after(env) while skipped&.first (byebug) [19, 28] in /usr/local/bundle/gems/actionpack-6.1.5/lib/action_controller/metal/rescue.rb 19: 20: private 21: def process_action(*) 22: super 23: rescue Exception => exception => 24: request.env["action_dispatch.show_detailed_exceptions"] ||= show_detailed_exceptions? 25: rescue_with_handler(exception) || raise 26: end 27: end 28: end (byebug) [19, 28] in /usr/local/bundle/gems/actionpack-6.1.5/lib/action_controller/metal/rescue.rb 19: 20: private 21: def process_action(*) 22: super 23: rescue Exception => exception 24: request.env["action_dispatch.show_detailed_exceptions"] ||= show_detailed_exceptions? => 25: rescue_with_handler(exception) || raise 26: end 27: end 28: end (byebug) [34, 43] in /usr/local/bundle/gems/actionpack-6.1.5/lib/action_controller/metal/instrumentation.rb 34: result = super 35: payload[:response] = response 36: payload[:status] = response.status 37: result 38: ensure => 39: append_info_to_payload(payload) 40: end 41: end 42: 43: def render(*) (byebug) [20, 29] in /usr/local/bundle/gems/activesupport-6.1.5/lib/active_support/notifications/instrumenter.rb 20: def instrument(name, payload = {}) 21: # some of the listeners might have state 22: listeners_state = start name, payload 23: begin 24: yield payload if block_given? => 25: rescue Exception => e 26: payload[:exception] = [e.class.name, e.message] 27: payload[:exception_object] = e 28: raise e 29: ensure (byebug) [21, 30] in /usr/local/bundle/gems/activesupport-6.1.5/lib/active_support/notifications/instrumenter.rb 21: # some of the listeners might have state 22: listeners_state = start name, payload 23: begin 24: yield payload if block_given? 25: rescue Exception => e => 26: payload[:exception] = [e.class.name, e.message] 27: payload[:exception_object] = e 28: raise e 29: ensure 30: finish_with_state listeners_state, name, payload (byebug) [22, 31] in /usr/local/bundle/gems/activesupport-6.1.5/lib/active_support/notifications/instrumenter.rb 22: listeners_state = start name, payload 23: begin 24: yield payload if block_given? 25: rescue Exception => e 26: payload[:exception] = [e.class.name, e.message] => 27: payload[:exception_object] = e 28: raise e 29: ensure 30: finish_with_state listeners_state, name, payload 31: end (byebug) [23, 32] in /usr/local/bundle/gems/activesupport-6.1.5/lib/active_support/notifications/instrumenter.rb 23: begin 24: yield payload if block_given? 25: rescue Exception => e 26: payload[:exception] = [e.class.name, e.message] 27: payload[:exception_object] = e => 28: raise e 29: ensure 30: finish_with_state listeners_state, name, payload 31: end 32: end (byebug) [25, 34] in /usr/local/bundle/gems/activesupport-6.1.5/lib/active_support/notifications/instrumenter.rb 25: rescue Exception => e 26: payload[:exception] = [e.class.name, e.message] 27: payload[:exception_object] = e 28: raise e 29: ensure => 30: finish_with_state listeners_state, name, payload 31: end 32: end 33: 34: # Send a start notification with +name+ and +payload+. (byebug) Completed 500 Internal Server Error in 86053ms (ActiveRecord: 77.0ms | Allocations: 2096598) [36, 45] in /usr/local/bundle/gems/actionview-6.1.5/lib/action_view/rendering.rb 36: # Overwrite process to set up I18n proxy. 37: def process(*) #:nodoc: 38: old_config, I18n.config = I18n.config, I18nProxy.new(I18n.config, lookup_context) 39: super 40: ensure => 41: I18n.config = old_config 42: end 43: 44: module ClassMethods 45: def _routes (byebug) [25, 34] in /usr/local/bundle/gems/actionpack-6.1.5/lib/action_dispatch/middleware/callbacks.rb 25: error = nil 26: result = run_callbacks :call do 27: @app.call(env) 28: rescue => error 29: end => 30: raise error if error 31: result 32: end 33: end 34: end (byebug) [12, 21] in /usr/local/bundle/gems/actionpack-6.1.5/lib/action_dispatch/middleware/executor.rb 12: state = @executor.run!(reset: true) 13: begin 14: response = @app.call(env) 15: returned = response << ::Rack::BodyProxy.new(response.pop) { state.complete! } 16: ensure => 17: state.complete! unless returned 18: end 19: end 20: end 21: end (byebug) [33, 42] in /usr/local/bundle/gems/actionpack-6.1.5/lib/action_dispatch/middleware/debug_exceptions.rb 33: raise ActionController::RoutingError, "No route matches [#{env['REQUEST_METHOD']}] #{env['PATH_INFO'].inspect}" 34: end 35: 36: response 37: rescue Exception => exception => 38: invoke_interceptors(request, exception) 39: raise exception unless request.show_exceptions? 40: render_exception(request, exception) 41: end 42: (byebug) [34, 43] in /usr/local/bundle/gems/actionpack-6.1.5/lib/action_dispatch/middleware/debug_exceptions.rb 34: end 35: 36: response 37: rescue Exception => exception 38: invoke_interceptors(request, exception) => 39: raise exception unless request.show_exceptions? 40: render_exception(request, exception) 41: end 42: 43: private (byebug) [35, 44] in /usr/local/bundle/gems/actionpack-6.1.5/lib/action_dispatch/middleware/debug_exceptions.rb 35: 36: response 37: rescue Exception => exception 38: invoke_interceptors(request, exception) 39: raise exception unless request.show_exceptions? => 40: render_exception(request, exception) 41: end 42: 43: private 44: def invoke_interceptors(request, exception) (byebug) ArgumentError (wrong number of arguments (given 3, expected 1..2)): app/controllers/gogakus_controller.rb:26:in `create' ```
senseIY

2022/03/19 03:03

自分なりに考えてみたのですが、解決の糸口がつかめませんでした。もう少し粘ってみても解決できそうになかったら、今回は別の方法でアップロードされたファイルにバリデーションをかける、またはバリデーションをかけないでとりあえず先に進めることにします。もし、railsのerbファイルでjavascript(フレームワークは出来ればつ使わない)を使用してバリデーションをかける際にname属性を使わないでバリデーションをかける方法があれば、教えていただけると幸いです。
guest

回答1

0

自己解決

解決致しました。エラーの理由としてはこれから記述するコードをすべての機能を実施していない状態でファイルを送信した場合にエラーになってしまうようです。
以下をnew.html.erbへ追記

<script type="text/javascript"> $("#gogaku_file").bind("change", function() { var size_in_megabytes = this.files[0].size/1024/1024; if (size_in_megabytes > 1) { alert("Maximum file size is 1MB. Please choose a smaller file."); $("#gogaku_file").val(""); } }); </script>

railsチュートリアルを参考にさせて頂いたのですが、自分の勘違いでモデルにバリデーションをかけただけで作動すると思っていたのですが、このコードも同時に実行しないとエラーになってしまうようです。
皆様ご協力ありがとうございました。

投稿2022/03/19 06:18

senseIY

総合スコア281

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問